1

アプリケーション内で Entity Framework 4.1 を使用しています。要件の 1 つは、データベースでいくつかのストアド プロシージャを実行することです。さらに、これらのストアド プロシージャは結果を返さないため、それらを開始するだけで忘れてしまいます。

当然、.NET はこれらの操作が完了するまで待機するため、しばらくすると「タイムアウト期間が経過しました」という例外がスローされます。

CommandTimeout プロパティをより高い値に設定することで修正できることはわかっていますが、別の解決策を探しています (存在する場合)。

Fire-and-Forget として Entity Framework を使用してストアド プロシージャを実行することは可能ですか?

どんな助けでも大歓迎です。

よろしく

4

1 に答える 1

1

ストアド プロシージャは、ファイア アンド フォーゲットの実行をサポートしていません。プレーンな ADO.NET を使用して、別の接続 (を使用BeginExecuteNonQuery) で非同期にクエリを実行することができます。EF は非同期実行をサポートしていません。ファイア アンド フォーゲットのように動作するもう 1 つのより複雑な方法は、ストアド プロシージャを 1 ステップ実行する SQL ジョブを作成することです。ストアド プロシージャを呼び出す代わりにsp_start_job、ジョブの開始直後に返される呼び出しを呼び出します。ジョブは、他の結果をアプリケーションに返さずに非同期で実行されます。

于 2011-07-15T06:37:20.467 に答える