我尝试使用asp.net vnext和EF 7.0创建一个简单的网站。对于开发,我使用localDB并且迁移工作正常。然后,我将我的站点部署到Azure,并希望将迁移应用于Azure SQL Server。
有没有办法将迁移应用到生产数据库,或者如何动态更改连接字符串以进行迁移?
每次我申请迁移时,都不想更改连接字符串。
答案 0 :(得分:5)
有三种方法可以应用迁移。
以编程方式(过时:请参阅下面的更新)
context.Database.ApplyMigrations()
从命令行。这实际上是针对管理本地数据库的开发人员,而不是远程服务器。如您所述,针对Azure运行需要您的本地项目包含Azure的连接字符串。
制作并手动运行脚本。
$ dnx ef migrations script
(或)
PM> Script-Migration
这些命令的参数(以及确切的命令)尚未100%设置。没有关于迁移的官方文档。在此期间,this design document显示了计划的迁移命令。
<强>更新强>
API现在是
context.Database.Migrate()
答案 1 :(得分:2)
Startup.cs
下面的代码将在启动时应用数据库迁移。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// other app setup omitted.
if (env.IsDevelopment())
{
// development settings here.
app.UseDeveloperExceptionPage();
}
else
{
// production settings here.
try
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
.CreateScope())
{
serviceScope.ServiceProvider.GetService<YourDbContext>()
.Database.Migrate();
}
}
catch
{
// ignored
}
}
}