任务50:Identity MVC:DbContextSeed初始化
2024-09-06 12:15:25
任务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();
})
运行测试
先把我们本地的数据库删掉。然后再运行我们的程序
更正代码
看到我们执行成功的输出信息
默认已经初始化的 用户信息
纠正代码错误:
重新运行并新建数据库
登陆成功。!!!!!
最新文章
- #import、#include、#import<;>;和#import””的区别
- 20145211 《Java程序设计》第2周学习总结——桃花依旧笑春风
- jQuery与DOM相互转换
- [开发]Win7环境下Eclipse连接Hadoop2.2.0
- Awk中调用shell命令
- NoInstall_Mysql
- AndroidStudio SDK版本下载
- JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)
- 科尔尼咨询公司 - MBA智库百科
- windows server 2003断开远程之后自动注销用户
- 【腾讯Bugly干货分享】你为什么需要 Kotlin
- 一个适用于单页应用,返回原始滚动条位置的demo
- Mongodb---操作备忘
- docker第一章:docker核心概念及centos6下安装
- omcat+java的web程序持续占cpu高问题调试【转】
- 建立一个基本的UI
- 基于spring-cloud的微服务(4)API网关zuul
- 启动项目报错:502 Server dropped connection The following error occurred while trying to access http://localhost:8080/TestDemo:
- Django框架_URLconf、Views、template、ORM
- Truthy Falsy