【发布时间】:2021-02-23 08:24:29
【问题描述】:
创建 .NET Core 5 应用程序时,我通过在 Startup.Configure (...) 方法顶部执行迁移代码来运行 EF 迁移:
public class Startup
{
. . .
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
using (var scope = app.ApplicationServices.CreateScope())
{
ApplicationDbContext context = scope.ServiceProvider.GetService<ApplicationDbContext>();
context.Database.Migrate();
}
. . .
}
}
这一切都运作良好,直到我最近添加了一些依赖数据库的托管服务和迁移应用的更改。现在,如果我需要在托管服务启动之前应用迁移,我的应用会在启动时崩溃,因为托管服务在迁移运行之前启动。
有没有办法解决这个问题?有没有办法在托管服务启动之前运行迁移?
【问题讨论】:
-
恕我直言,在您自己的
HostedService中执行迁移,请务必先注册。 -
如果您只有一个托管服务,这可能会起作用,但如果您有更多的服务都依赖于数据库怎么办?
-
HostedServices是串行启动的,服务提供者按照注册的顺序返回它们。 github.com/dotnet/runtime/blob/…
标签: c# .net-core entity-framework-core