[解決済み] エンティティフレームワークのタイムアウト
質問
Entity Framework(EF)で、関数のインポートを使用すると、30秒以上かかるタイムアウトが発生します。以下を試してみましたが、この問題を解決することができません。
私は
Default Command Timeout=300000
の接続文字列に
App.Config
EDMX ファイルを持つプロジェクトで、次のように提案されています。
ここで
.
私の接続文字列はこんな感じです。
<add
name="MyEntityConnectionString"
connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
res://*/MyEntities.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
MultipleActiveResultSets=True;Default Command Timeout=300000;""
providerName="System.Data.EntityClient" />
こんな感じで、リポジトリに直接CommandTimeoutを設定してみました。
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
EFがタイムアウトしないようにするには、他にどうしたらよいですか?この現象は非常に大きなデータセットに対してのみ発生します。小さなデータセットではすべてうまくいきます。
以下は、私が受け取ったエラーの一つです。
System.Data.EntityCommandExecutionException: コマンド定義の実行中にエラーが発生しました。詳細は内部例外を参照してください。---> System.Data.SqlClient.SqlException: タイムアウトが切れました。 操作の完了前にタイムアウト時間が経過したか、サーバーが応答していません。
OK - 私はこれを動作させることができましたが、何が起こったのか愚かです。私は、接続文字列を
Default Command Timeout=300000
とCommandTimeoutを180に設定しました。を削除したところ
Default Command Timeout
を接続文字列から削除すると、動作しました。つまり、リポジトリ内のコンテキストオブジェクトに手動でCommandTimeoutを設定すればいいということです。
this.context.CommandTimeout = 180;
接続文字列でタイムアウトの設定をしても、何の影響もないらしい。
解決方法は?
EFの接続文字列でデフォルトコマンドタイムアウトを指定すると、既知のバグがあります。
http://bugs.mysql.com/bug.php?id=56806
接続文字列から値を削除し、データコンテキストオブジェクト自体に値を設定します。これは、コネクションストリングから競合する値を削除すれば動作します。
Entity Framework Core 1.0:
this.context.Database.SetCommandTimeout(180);
Entity Framework 6:
this.context.Database.CommandTimeout = 180;
Entity Framework 5:
((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;
Entity Framework 4以下。
this.context.CommandTimeout = 180;
関連
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] Entity Framework 5 レコードを更新する
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] Entity Frameworkにおける最速の挿入方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] 2つのリストを結合する
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] Entity Frameworkでデータベースのタイムアウトを設定する