使用功能导入需要超过30秒才能完成时,使用实体框架(EF)导致超时。我尝试了以下操作,但无法解决此问题:
我Default Command Timeout=300000
在这里建议的具有EDMX文件的项目的App.Config文件中添加了连接字符串。
这是我的连接字符串如下所示:
<add
name="MyEntityConnectionString"
connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
res://*/MyEntities.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
MultipleActiveResultSets=True;Default Command Timeout=300000;""
providerName="System.Data.EntityClient" />
我尝试直接在存储库中设置CommandTimeout,如下所示:
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
我还能做些什么来使EF超时?这仅适用于非常大的数据集。小型数据集一切正常。
这是我遇到的错误之一:
System.Data.EntityCommandExecutionException:执行命令定义时发生错误。有关详细信息,请参见内部异常。---> System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时或服务器没有响应。
好的-我已经开始工作了,这很愚蠢。我同时将连接字符串和Default Command Timeout=300000
和CommandTimeout都设置为180。Default Command Timeout
从连接字符串中删除时,它可以正常工作。因此,答案是在上下文对象的存储库中手动设置CommandTimeout,如下所示:
this.context.CommandTimeout = 180;
显然,在连接字符串中设置超时设置对此没有影响。
"
在字符串中。
NONCLUSTERED
一些表中添加索引,这为我们解决了超时问题。