zoukankan      html  css  js  c++  java
  • 任务50:Identity MVC:DbContextSeed初始化

    任务50:Identity MVC:DbContextSeed初始化

    首先添加seed

    每次应用程序启动,监测一下,是否是第一次启动。如果是第一次执行,我们需要在数据库内添加一个记录

    比如说我们的用户账号,我们在第一次进来的时候,我们需要有一个管理员

    在Data文件夹下新建:

    ApplicationDbContextSeed.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Identity;
    using MvcCookieAuthSample.Models;
    using Microsoft.Extensions.DependencyInjection;
    

    namespace MvcCookieAuthSample.Data
    {
    public class ApplicationDbContextSeed
    {
    private UserManager<ApplicationUser> _userManager;
    public async Task SeedAsync(ApplicationDbContext context,IServiceProvider services)
    {
    if (context.Users.Any())
    {
    _userManager
    = services.GetRequiredService<UserManager<ApplicationUser>>();
    var defaultUser = new ApplicationUser
    {
    UserName
    = "Administrator",
    Email
    = "haogeili@163..com",
    NormalizedEmail
    ="admin"
    };

                </span><span style="color: #0000ff;">var</span> result=<span style="color: #0000ff;">await</span> _userManager.CreateAsync(defaultUser, <span style="color: #800000;">"</span><span style="color: #800000;">Password$123</span><span style="color: #800000;">"</span><span style="color: #000000;">);
                </span><span style="color: #0000ff;">if</span> (!<span style="color: #000000;">result.Succeeded)
                {
                    </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> Exception(<span style="color: #800000;">"</span><span style="color: #800000;">初始默认用户失败!</span><span style="color: #800000;">"</span><span style="color: #000000;">);
                }
            }
        }
    }
    

    }

    ApplicationDbContextSeed

    调用Seed方法

    WebHostMigrationExtensions.cs

    这里扩展的方法,我们要扩展的是IWebHost

    这里我们要把依赖注入引入进来

    包装器我们在哪里使用呢?Program.cs程序启动文件里面

    这样我们的初始化就完成了。

              .MigrationDbContext<ApplicationDbContext>((context,services)=> {
                        new ApplicationDbContextSeed().SeedAsync(context, services)
                        .Wait();
                    })

    运行测试

    先把我们本地的数据库删掉。然后再运行我们的程序

    更正代码

    看到我们执行成功的输出信息

    默认已经初始化的 用户信息

    纠正代码错误:

    重新运行并新建数据库

    登陆成功。!!!!!



    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Java字符集
    ==和equals区别
    web.xml中load-on-startup标签的含义
    使用solrJ管理索引——(十四)
    Solr管理索引库——(十三)
    [置顶] 关于redhat系统yum源的配置1
    设置Oracle用IP远程连接和客户端访问
    jqueryUI中datepicker的使用,解决与asp.net中的UpdatePanel联合使用时的失效问题
    [置顶] 关于redhat系统yum源的配置2
    浅析innodb_support_xa与innodb_flush_log_at_trx_commit
  • 原文地址:https://www.cnblogs.com/owenzh/p/11303033.html
Copyright © 2011-2022 走看看