EF代码优先:需要更新生产服务器上的列长度和数据

时间:2017-09-25 17:02:19

标签: asp.net-core entity-framework-core ef-migrations

我们使用ASP.NET MVC Core方法创建了Code First应用 - 使用SQL Server 2012。该应用已在生产中投放,我们需要将列的长度从varchar(25)更改为varchar(30)。我们用于进行上述更改的方法如下。这种做法似乎啰嗦。 问题:有更好更快的方法吗?我们将ASP.NET Core 1.1.1VS2017

一起使用

我们的方法 [到目前为止]:

A 即可。在Developer计算机上,将相应的Model更改为:

[Column(TypeName = "varchar(30)")]
public string ColumnName { get; set; }

即可。在PM> Add-Migration ...

PM> Update-Database ...控制台中运行Package ManagerVS2017命令

C 即可。将数据重新加载到具有更改列长度的相应表中

d 即可。将数据库重新部署到生产环境。

电子即可。将项目重新部署到生产环境。

1 个答案:

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