繁体   English   中英

实体框架不遵守命令超时

[英]Entity Framework not respecting Command Timeout

我遇到了基于实体框架的 api 的问题,其中 3rd 方开发人员错误地发送了太大的查询并导致系统性能下降。 我已经通知他们停止练习,但我想将查询限制在 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;
    }
}

检查这个:

实体框架 6:

this.context.Database.CommandTimeout = 180;

实体框架 5:

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

实体框架 4 及以下:

this.context.CommandTimeout = 180;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM