簡體   English   中英

Linq-to-SQL超時

[英]Linq-to-SQL Timeout

我一直在我的一個頁面上收到一個錯誤,linq查詢已超時,因為它花了太長時間。 它使頁面無法使用。

這是一個報告頁面,每天只能由管理員訪問一次。 根本不可避免地削減這個查詢,它只需要對大量數據進行排序。

解決這個問題的解決方法我已經閱讀過,通過增加數據上下文中的超時屬性,但我想避免這樣做,因為它會為整個網站改變它。

有沒有辦法為單個頁面設置更長的時間?

剛剛找到了智能感知的答案:

using (MainContext db = new MainContext())
{
    db.CommandTimeout = 3 * 60; // 3 Mins
}

這就是如何在每個查詢的基礎上增加查詢的時間,因為它應該修改連接字符串或數據上下文。

@湯姆Gullens答案並沒有為我工作在EF6

我不得不深入到DbContext上的DbContext

Ecom.Database.CommandTimeout = 120;

希望這能為您節省一些時間。

湯姆古倫的答案很好。

另一位受訪者提到在連接字符串中設置連接超時。
我想提醒一下,連接字符串的連接超時屬性不是命令超時。 當你想到它時,它會更加明顯。 這是一個常見的錯誤。

這是.Net 4.5的最新語法。

    MyDbContext context = new MyDbContext();
    context.Database.SetCommandTimeout(300);

在增加SQL超時之前,總是值得評估索引策略。 根據我的經驗,很少有針對索引良好的表和列的查詢超時。

德歐文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM