Asp.net core 发布后使用迁移更新数据库

Asp.net core 发布后使用迁移更新数据库,asp.net-core,migration,Asp.net Core,Migration,我正在ASP.NET核心中开发web API。我正在寻找一种方法更新客户的数据库与发布API文件[自动]。 我不想使用更新数据库 谢谢执行项目后,update命令将自动运行基本上,您只需在应用程序启动时调用context.Database.Migrate()。我最近遇到了这个IWebHost扩展的实现,它允许在启动时迁移数据库上下文,并运行一个自定义操作来为数据库添加一些默认数据 公共静态类IWebHostExtensions { 公共静态IWebHost MigrateDbContext(此I

我正在ASP.NET核心中开发web API。我正在寻找一种方法更新客户的数据库与发布API文件[自动]。 我不想使用更新数据库
谢谢

执行项目后,update命令将自动运行

基本上,您只需在应用程序启动时调用
context.Database.Migrate()
。我最近遇到了这个
IWebHost
扩展的实现,它允许在启动时迁移数据库上下文,并运行一个自定义操作来为数据库添加一些默认数据

公共静态类IWebHostExtensions
{
公共静态IWebHost MigrateDbContext(此IWebHost webHost,操作播种器)
其中TContext:DbContext
{
使用(var scope=webHost.Services.CreateScope())
{
var services=scope.ServiceProvider;
var logger=services.GetRequiredService();
var context=services.GetService();
尝试
{
logger.LogInformation($“正在迁移与上下文{typeof(TContext.Name})关联的数据库”;
Migrate();
播种机(上下文、服务);
logger.LogInformation($“与上下文{typeof(TContext.Name})关联的迁移数据库”);
}
捕获(例外情况除外)
{
logger.LogError(例如,$”迁移上下文{typeof(TContext.Name})上使用的数据库时出错;
}
}
返回webHost;
}
}
用法:

公共静态类程序
{
公共静态void Main(字符串[]args)
{
BuildWebHost(args)
.MigrateDbContext((上下文、服务)=>
{
var配置=services.GetService();
MyDbContext.SeedAsync(context.Wait();
})
.Run();
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.Build();
}