Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“更新数据库”;命令失败,超时异常_C#_Entity Framework_Timeout_Entity Framework 6 - Fatal编程技术网

C# &引用;“更新数据库”;命令失败,超时异常

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

我正在使用EF迁移,有一个包含大量数据的表。我需要更改混凝土柱的MaxLength(它并没有长度约束)

此命令失败,超时异常。 尝试在没有任何运气的情况下设置CommandTimeout i nDbContext构造函数


有没有办法禁用或设置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