EF mysql 数据迁移_Asp.Net Core EFCore Migrations 数据迁移

通过Migration生成数据库的命令

在vs中的“程序包管理器控制台”中输入如下两个命令,也可以在项目所在文件夹中打开命令行工具进行操作

命令一共有5种,每个有两种写法:

dotnet ef migrations add initialCreate     ||Add-Migrantion (执行此命令项目生成一个目录(Migrations))

dotnet ef database update       ||Update-Database  (把当前的Migrations更新到数据库中)

dotnet ef migrations remove  ||Remove-Migration (删除一个最新的Migrations,降级,根据数据库表结构删除migrations文件夹下面多余的文件)

dotnet ef database update LastGoodMigration || Update-Database LastGoodMigration(指定一个Migrations更新  LastGoodMigration 指定的migration名称)

dotnet ef migrations script || Script-Migration (将更新内容生成sql脚本语句)

asp.net core 中实现DBContext的初始化,先创建一个ApplicationDBContextSeed,作为初始化基础数据的类,

需要引用 using Microsoft.Extensions.DependencyInjection 和 using Microsoft.Extensions.Logging ,只有在初始化创建数据库的时候将默认的admin账号写入表中

public class ApplicationDBContextSeed

{

private UserManager _userManager;

public async Task SeedAsync(ApplicationDBContext contest,IServiceProvider serviceProvider)

{

if (!contest.Users.Any())

{

_userManager = serviceProvider.GetRequiredService>();

var defultUser = new ApplicationUser

{

UserName = "admin",

Email = "leo@qq.com",

NormalizedUserName = "admin"

};

var resilt= await _userManager.CreateAsync(defultUser, "123456");

if(!resilt.Succeeded)

{

throw new Exception("初始化用户信息失败!");

}

}

}

}

创建WebHostMirgationExtensions

public static class WebHostMirgationExtensions

{

public static IWebHost MigrateDbContext(this IWebHost host,Action sedder) where TContext:DbContext

{

using (var scope =host.Services.CreateScope())

{

var services = scope.ServiceProvider;

var logger = services.GetRequiredService>();

var context = services.GetService();

try

{

context.Database.Migrate();//每次执行都会自动去更新数据库

sedder(context, services);

logger.LogInformation($"执行DBContext:{typeof(TContext).Name} seed方法成功");

}

catch (Exception ex)

{

logger.LogError(ex, $"执行DBContext:{typeof(TContext).Name} seed方法失败");

}

}

return host;

}

}

修改Program

public static void Main(string[] args)

{

BuildWebHost(args)

.MigrateDbContext((context, server) => {

new ApplicationDBContextSeed().SeedAsync(context, server).Wait(); }

).Run();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值