ページの1つで、linqクエリに時間がかかりすぎてタイムアウトになったというエラーを受け取りました。ページが使用できなくなります。
これはレポートページであり、管理者は1日に1回しかアクセスできません。このクエリを完全に削除することは避けられません。大量のデータを並べ替えるだけです。
私が読んだこれを解決する解決策は、データコンテキストのタイムアウトプロパティを増やすことですが、Webサイト全体でタイムアウトプロパティが変更されるため、それを避けたいと思います。
個々のページに長いタイムアウトを設定する方法はありますか?
インテリセンスで遊ぶ答えを見つけました:
using (MainContext db = new MainContext())
{
db.CommandTimeout = 3 * 60; // 3 Mins
}
これは、接続文字列またはデータコンテキストを変更することを想定して、クエリごとにクエリのタイムアウトを増やす方法です。
@Tom Gullensの回答は、EF6
DbContext
のデータベースにドリルダウンする必要がありました
Ecom.Database.CommandTimeout = 120;
これで時間を節約できることを願っています。
トム・ガレンの答えは良いものです。
別の回答者は、接続文字列で接続タイムアウトを設定すると述べました。
接続文字列の接続タイムアウトプロパティがコマンドタイムアウトではないことに注意したいです。あなたがそれについて考えるとき、それはより明白です。これはよくある間違いです。
.Net 4.5の最新の構文は次のとおりです。
MyDbContext context = new MyDbContext();
context.Database.SetCommandTimeout(300);
SQLタイムアウトを増やす前に、インデックス作成戦略を評価する価値が常にあります。私の経験では、適切にインデックス付けされたテーブルと列に対するクエリがタイムアウトすることはまれです。
デオーウェン