【发布时间】:2021-03-07 11:23:58
【问题描述】:
所以我想在 Azure 应用服务首次启动时运行 EF 迁移。以下代码正常工作:
public class Program
{
public static void Main(string[] args)
{
...
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
using (var context = scope.ServiceProvider.GetService<MyContext>())
{
context.Database.Migrate();
}
host.Run();
...
}
}
但是,由于数据库在 Azure 上作为无服务器实例运行,如果它当前暂停,则需要重试(因为第一次连接尝试失败)。
服务启动后,对于我已使用EnableRetryOnFailure 配置重试的请求 - 按预期工作:
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(Configuration["...."],
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: TimeSpan.FromSeconds(5),
errorNumbersToAdd: null);
});
});
那么我可以在Program.Main() 中使用类似的东西来处理应用服务启动迁移吗?
非常感谢!
【问题讨论】:
标签: .net entity-framework-core ef-core-3.1 ef-core-3.0 ef-core-5.0