"Update-Database"命令因TimeOut异常而失败

dee*_*zen 19 c# entity-framework timeout entity-framework-6

我正在使用EF迁移并拥有包含大量数据的表.我需要更改具体列的MaxLength(它没有长度限制).

ALTER TABLE MyDb ALTER COLUMN [MyColumn] [nvarchar](2) NULL
Run Code Online (Sandbox Code Playgroud)

此命令因TimeOut异常而失败.试图设置CommandTimeout i nDbContext构造函数没有任何运气.

有没有办法禁用或设置Package Manager Console EF命令的超时?

Sla*_*vvy 25

或者通过使用来编写更改脚本

Update-Database -script
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用SQL Management Studio对数据库运行脚本并运行它.

  • 感谢您的提示!我没想到你能做到这一点。:-) (2认同)
  • 在VS 2017中,它使用sql命令打开了一个新文件,很好的提示。 (2认同)

dee*_*zen 23

自己找到解决方案.

从EF5开始,有一个新属性CommandTimeout可以从DbMigrationsConfiguration获得

internal sealed class MyMigrationConfiguration : DbMigrationsConfiguration<MyDbContext>
{
    public Configuration()
    {
        CommandTimeout = 10000; // migration timeout
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在那个例子中是什么调用了 Configuration 方法?或者它应该是一个构造函数方法(并且在示例中它无意中与类名不匹配)? (2认同)
  • 附带说明:值为0表示没有限制(尝试执行命令将无限期等待)。(https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.commandtimeout(v=vs.110).aspx) (2认同)