任务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"
                };

                var result=await _userManager.CreateAsync(defaultUser, "Password$123");
                if (!result.Succeeded)
                {
                    throw new Exception("初始默认用户失败!");
                }
            }
        }
    }
}
ApplicationDbContextSeed

 

 

调用Seed方法

WebHostMigrationExtensions.cs

 

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

 

 

 

 

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

 

 

 

 

 

 

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

 

 

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

 

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

 

 

运行测试

 

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

 

 

更正代码

 

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

 

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

 

 

 

纠正代码错误:

 

重新运行并新建数据库

 

 

登陆成功。!!!!!

 

转载于:https://www.cnblogs.com/wangjunwei/p/10460899.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值