簡體   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