实体框架超时

当使用需要30秒才能完成的功能导入时,我使用实体框架(EF)获取超时。 我尝试了以下方法,但无法解决此问题:

按照此处所建议的,将EDMX文件的项目中的App.Config文件中的连接字符串添加为Default Command Timeout=300000

这就是我的连接字符串的样子:

<add 
    name="MyEntityConnectionString" 
    connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
       res://*/MyEntities.msl;
       provider=System.Data.SqlClient;provider connection string=&quot;
       Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
       Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
       MultipleActiveResultSets=True;Default Command Timeout=300000;&quot;"
    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;

显然,在连接字符串中设置超时设置对它没有影响。


有一个已知的错误,指定EF连接字符串内的默认命令超时。

http://bugs.mysql.com/bug.php?id=56806

从连接字符串中删除该值并将其设置在数据上下文对象本身上。 如果您从连接字符串中删除冲突的值,这将起作用。

实体框架核心1.0:

this.context.Database.SetCommandTimeout(180);

实体框架6:

this.context.Database.CommandTimeout = 180;

实体框架5:

((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;

实体框架4及以下:

this.context.CommandTimeout = 180;

如果您正在使用DbContext,请使用以下构造函数来设置命令超时:

public class MyContext : DbContext
{
    public MyContext ()
    {
        var adapter = (IObjectContextAdapter)this;
        var objectContext = adapter.ObjectContext;
        objectContext.CommandTimeout = 1 * 60; // value in seconds
    }
}

如果您使用的是DbContext和EF v6 +,或者您可以使用:

this.context.Database.CommandTimeout = 180;
链接地址: http://www.djcxy.com/p/33563.html

上一篇: Entity Framework Timeouts

下一篇: Entity Framework 4 Save and Cancel