如何将代码优先迁移应用于Azure中的数据库?

时间:2018-10-11 10:56:43

标签: sql-server entity-framework azure ef-code-first entity-framework-core

我正在开发在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中数据库的迁移吗?

1 个答案:

答案 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();
}