在Entity Framework 4.3中设置命令超时时间

33

我无法找到一种使用Entity Framework 4.3和其DbContext设置linq查询命令超时的方法。

如何在Entity Framework中增加Command Timeout?

编辑 实际上,我正在寻找增加Command Timeout的方法。 我混淆了两个问题,应该是SQL命令超时而不是连接超时。

谢谢


2
有关更新的 EF 版本,请参见:https://dev59.com/p2025IYBdhLWcg3wEhnr#6234593 - Jon Schneider
3个回答

64

如果您正在使用DbContext,那么您首先需要降级到ObjectContext:

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

修改了我的问题:我混淆了命令超时和连接超时。抱歉。 - Saher Ahwal
请问您建议我们在项目中应该在哪里应用这段代码? - dilipkumar1007

11

我在我的上下文类中添加了命令超时值,以尝试处理填充应用程序的某些存储过程的较长处理时间。看起来已经解决了问题。

public partial class ExampleEntities : DbContext
    {
        public ExampleEntities()
            : base("name=ExampleEntities")
        {
            ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

完美的答案,附上示例代码放置位置。谢谢。 - sapatelbaps
1
请注意,由于这个类通常是生成的代码,最好在.tt文件或其他初始化代码中进行更改。否则,在更新数据模型并重新生成时,更改将被覆盖。 - Tim Sparkles

9

这个命令已经足够了。

((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
                = 180;

请问您能否建议我们在项目中应该在哪里应用这段代码? - dilipkumar1007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接