实体框架不尊重命令超时

时间:2017-04-17 18:24:35

标签: c# sql entity-framework entity-framework-6

我遇到了基于我的实体框架api的问题,其中第三方开发人员错误地发送了太大的查询并导致系统性能下降。我告诉他们停止练习,但我想将查询限制在1分钟,然后将其删除。

听起来我应该能够在构造函数中设置命令超时(如下所示)。当我用长查询测试它时,它完全按照之前的那样(3分钟以上)执行查询,它似乎根本不尊重命令超时。

我做错了什么吗?这不是命令超时预期的工作方式吗?它是异步的,命令超时不能用于异步吗?任何解决方案或指针将不胜感激。

public class CustomContext : DbContext
{
    public CustomContext(string connectionName)
        : base(connectionName)
    {
        var objectContext = (this as IObjectContextAdapter).ObjectContext;
        objectContext.CommandTimeout = 60;
    }

    public CustomContext(EntityConnection connection)
        : base(connection, contextOwnsConnection: false)
    {
        var objectContext = (this as IObjectContextAdapter).ObjectContext;
        objectContext.CommandTimeout = 60;
    }
}

1 个答案:

答案 0 :(得分:0)

检查此:

实体框架6:

this.context.Database.CommandTimeout = 180;

实体框架5:

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

实体框架4及更低版本:

this.context.CommandTimeout = 180;
相关问题