我正在开发在Azure中托管的ASP.NET Core API应用程序。开发和部署都非常顺利,但是当我需要应用迁移时遇到了一个问题。
开发时,我使用本地SQL数据库,而在部署时,我依赖Azure SQL数据库。我通过开发中的用户机密提供连接字符串,在生产中,我使用Azure Key Vault读取连接字符串。当然,还有一个ASPNETCORE_ENVIRONMENT
环境变量,当我开发并部署到Azure后更改为Development
时,我将其保留为Production
。但是,问题是,无论我的ASPNETCORE_ENVIRONMENT
变量设置为Development
还是Production
,当我在开发过程中创建新的迁移并从PowerShell发布dotnet ef update database
时,它都会只是更新我的本地数据库,而我的Azure数据库未更改。有什么主意如何发布到Azure中数据库的迁移吗?
答案 0 :(得分:2)
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyContext>(
options => options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
}
public void Configure(
IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
if (env.IsProduction())
using (var context = serviceProvider.GetService<MyContext>())
context.Database.Migrate();
}