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();
                    })

    运行测试

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

    更正代码

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

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

    纠正代码错误:

    重新运行并新建数据库

    登陆成功。!!!!!



    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    day10 测试2
    算法题
    day10 自动化测试
    day09 测试
    进行试验,对比
    多层网络的SIR实现
    day08 商城项目
    day07 cookie session 模板
    day06 模型类
    纸上谈兵:图(graph)
  • 原文地址:https://www.cnblogs.com/owenzh/p/11303033.html
Copyright © 2011-2022 走看看