C# &引用;“更新数据库”;命令失败,超时异常
我正在使用EF迁移,有一个包含大量数据的表。我需要更改混凝土柱的MaxLength(它并没有长度约束) 此命令失败,超时异常。 尝试在没有任何运气的情况下设置CommandTimeout i nDbContext构造函数C# &引用;“更新数据库”;命令失败,超时异常,c#,entity-framework,timeout,entity-framework-6,C#,Entity Framework,Timeout,Entity Framework 6,我正在使用EF迁移,有一个包含大量数据的表。我需要更改混凝土柱的MaxLength(它并没有长度约束) 此命令失败,超时异常。 尝试在没有任何运气的情况下设置CommandTimeout i nDbContext构造函数 有没有办法禁用或设置Package Manager控制台EF命令的超时?我自己找到了解决方案 由于EF5,有一个新的属性CommandTimeout,可从DBMigRationalConfiguration获得 内部密封类MyMigrationConfiguration:DbM
有没有办法禁用或设置Package Manager控制台EF命令的超时?我自己找到了解决方案 由于EF5,有一个新的属性CommandTimeout,可从DBMigRationalConfiguration获得
内部密封类MyMigrationConfiguration:DbMigrationsConfiguration
{
公共配置()
{
CommandTimeout=10000;//迁移超时
}
}
或者使用
Update-Database -script
然后,您可以使用SQL Management Studio对数据库运行脚本。我遇到了几乎完全相同的情况:尝试增加列长度时超时过期。对我来说,使用
更新数据库
一小时前还可以。问题原来是我试图更改的数据库和表上的一个开放事务。回滚该事务后,更新数据库
命令顺利通过。在我的情况下,问题是由一个非常大的查询引起的,该查询在EF中超时,但能够在SSMS中完成
建议更新数据库-脚本的答案对我不起作用,它给出了另一条错误消息
对我来说,我做了以下几点:
- 开放式SSM
- 工具>SQL Server探查器
- 返回VS并运行更新数据库
- 观察服务器探查器
- 您应该能够看到它超时的查询
- 复制该查询并在SSMS中运行它
- 现在重新运行更新数据库,速度较慢的部分应该可以了,因为查询已经完成
免责声明:这可能不适用于所有情况,因为它取决于哪个特定的查询正在减慢您的速度。对我来说,它起作用了。只需为MySql添加连接字符串“Command Timeout=120”,例如120秒。在EntityFrameworkCore中遇到同样的更新数据库命令超时问题。发现EFCore中不再存在-script参数。文档说明您需要使用脚本迁移 指定应用于数据库的上一次迁移,迁移后将为所有内容生成一个脚本,以使其成为最新版本:
Script-Migration 20210307058985_addIndexesToClientTable
您可以从.net项目中的迁移文件名中获取完整的迁移id,只需去掉末尾的.cs即可。或者,您也可以从数据库中的_EFMigrationsHistory表中获取它
如果您需要一个脚本来创建新的DB,它会说使用0:
Script-Migration 0 InitialCreate
对我来说,它在VS中打开了一个temp.sql文件,因为我从包控制台管理器运行它,然后我能够在MSSQL Management Studio中复制并执行它。在该示例中,配置方法的调用是什么?或者这应该是一个构造函数方法(在本例中,它无意中与类名不匹配)?试试这个:或者这个:只是一个旁注:值0表示没有限制(尝试执行命令将无限期等待)。谢谢你的建议!我不知道你能做到这一点。:-)脚本生成到哪里?我试过了,但没有剧本。它是否将其保存为某个位置的文件?嘿,我已经有一段时间没有使用它了,但我相当确定它将其转储到控制台中?在VS 2017中,它使用sql命令打开了一个新文件,这是一个很好的提示。
Script-Migration 20210307058985_addIndexesToClientTable
Script-Migration 0 InitialCreate