2

一度に 70K 近くのレコードを処理するために、アプリケーションで codefriststoredprocs 2.5.0 を使用しています。レコードが少ない場合はすべて正常に動作しますが、データのセットが大きい場合、「待機操作がタイムアウトしました」という例外が発生します。次の方法で、デフォルトのコマンド タイムアウト値を 30 秒から 600 秒に変更してみました。

//Previous approach
   ((System.Data.Entity.Infrastructure.IObjectContextAdapter)this.db).ObjectContext.CommandTimeout = 600;

//New approach for EF 6
this.db.Database.CommandTimeout = 600;

ただし、30 秒後に接続タイムアウト メッセージが表示されます。また、web.config 設定の接続タイムアウト値を 600 秒に変更しました (コマンドのタイムアウト値とは異なることはわかっていますが、試してみてください)。問題は、ストアド プロシージャの実行中にコマンドのタイムアウト値をデフォルトに変更する codefirststoredprocs ライブラリにあるように感じます。この問題を解決する方法はありますか、それともアプリケーションでストアド プロシージャを使用する別の方法を使用する必要がありますか。

前もって感謝します。

4

2 に答える 2

2

CodeFirstStoredProcsまず、この問題を解決するために尽力し、協力してくださったチームに感謝します。

前に述べたように、コマンドのタイムアウト値は、CodeFirstStoredProcsライブラリ内でデフォルトで 30 秒に設定されている可能性があります。

彼らの新しいリリース (バージョン 2.6) では、CallStoredProc<> メソッドに「コマンド タイムアウト」パラメータが追加されました。

私の場合、70K 近くのレコードを処理するために、メソッドを設定CommandTimeout = 0 しました。CallStoredProc<> これにより、ストアド プロシージャを実行するための無限の待機時間が追加されます。

CodeFirstStoredProcsチームにもう一度感謝します。:)

于 2013-11-28T07:52:39.550 に答える