Entity Framework タイムアウト: CommandTimeout を正しく設定します
Entity Framework (EF) を使用しているときに、関数インポートのタイムアウト (30 秒を超える) が発生した場合は、コマンド タイムアウトを正しく設定する手順を理解することが重要です。接続文字列に「Default Command Timeout=300000」を追加するのは単純でわかりやすいように思えるかもしれませんが、EF の一部のバージョンではこの方法に既知のバグがあります。
この問題を解決するには、リポジトリ内のコンテキスト オブジェクトに CommandTimeout を手動で直接設定します。 EF 4 以前では、this.context.CommandTimeout = 180;
を使用します。 EF 5 では、((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;
を使用します。 EF 6 では、this.context.Database.CommandTimeout = 180;
を使用します。 EF Core 1.0 では、this.context.Database.SetCommandTimeout(180);
を使用します。
CommandTimeout を直接設定すると、このコンテキストによって実行されるすべてのクエリにタイムアウト値が確実に適用されます。接続文字列に競合するタイムアウト値を設定すると、手動で設定した CommandTimeout が妨げられる可能性があることに注意することが重要です。そのため、ベスト プラクティスは、接続文字列からタイムアウト値を削除することです。
これらの手順に従うことで、大規模なデータ セットの処理時に EF がタイムアウトするのを防ぎ、大規模なデータ取得操作が必要な状況でも EF を効率的に使用できます。
以上が関数インポートのタイムアウトを回避するために、Entity Framework でコマンド タイムアウトを正しく設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。