任務50:Identity MVC:DbContextSeed初始化

任務50:Identity MVC:DbContextSeed初始化

 

首先添加seed數據庫

每次應用程序啓動,監測一下,是不是第一次啓動。若是是第一次執行,咱們須要在數據庫內添加一個記錄async

好比說咱們的用戶帳號,咱們在第一次進來的時候,咱們須要有一個管理員ide

 

在Data文件夾下新建:測試

ApplicationDbContextSeed.csui

 

 

 

 

 

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.csspa

 

這裏擴展的方法,咱們要擴展的是IWebHostcode

 

 

 

 

這裏咱們要把依賴注入引入進來orm

 

 

 

 

 

 

包裝器咱們在哪裏使用呢?Program.cs程序啓動文件裏面blog

 

 

這樣咱們的初始化就完成了。it

 

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

 

 

運行測試

 

先把咱們本地的數據庫刪掉。而後再運行咱們的程序

 

 

更正代碼

 

看到咱們執行成功的輸出信息

 

默認已經初始化的 用戶信息

 

 

 

糾正代碼錯誤:

 

從新運行並新建數據庫

 

 

登錄成功。!!!!!

相關文章
相關標籤/搜索