我们使用ASP.NET MVC Core
方法创建了Code First
应用 - 使用SQL Server 2012
。该应用已在生产中投放,我们需要将列的长度从varchar(25)
更改为varchar(30)
。我们用于进行上述更改的方法如下。这种做法似乎啰嗦。 问题:有更好更快的方法吗?我们将ASP.NET Core 1.1.1
与VS2017
我们的方法 [到目前为止]:
A 即可。在Developer计算机上,将相应的Model更改为:
[Column(TypeName = "varchar(30)")]
public string ColumnName { get; set; }
乙即可。在PM> Add-Migration ...
PM> Update-Database ...
控制台中运行Package Manager
和VS2017
命令
C 即可。将数据重新加载到具有更改列长度的相应表中
d 即可。将数据库重新部署到生产环境。
电子即可。将项目重新部署到生产环境。
答案 0 :(得分:0)
它"迁移时间" (RDBS执行DDL和更新整个生产数据库所需的实际/实际时间)不是很大(您同意此时将您的应用程序脱机,并且您不希望"命令超时" )你可以在app启动期间运行迁移:
public void Configure(IApplicationBuilder app)
{
// your current app.UseXxx() calls
using (var tempScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var db = tempScope.ServiceProvider.GetService<YourDbContext>();
db.Database.Migrate();
}
}