8

アプリケーションが処理するすべての Web リクエストで、アプリケーション全体をトランザクション対応にする必要があります。

トランザクションを開始する必要があり、コントローラーに例外がなかった場合はコミットします。それ以外の場合は、ロールバックします。

これまでのところ、次の実装があります。

  • まず、依存関係としてコントローラーにトランザクションを作成します。
  • 次に、コントローラー/サービス/リポジトリ/その他の作業を行います。
  • 最後に、メインの抽象コントローラー クラスがそのOnActionExecutedメソッドを実行します。ここで、コミットするかしないかのどちらかです。

私が使用しているテクノロジーのリストは次のとおりです。

  • MVC4
  • ニンジェクト
  • オートマッパー
  • サービスパターン

さて、私が知りたいのはデッドロックについてです。2 つの Web リクエストが同時に処理され、さらに 2 つのリポジトリ (それらのDataContextインスタンスにリンクされている)、つまりデータベース内の2 つのテーブルを操作する権利を取得するとどうなるでしょうか?

例: 1 つの要求が最初にテーブルを読み取りTable1、次にを読み取りTable2、その間に別の要求が を処理しTable2、次に を処理したいとしTable1ます。

私は何をすべきか?

4

2 に答える 2

2

DBへの呼び出しのトランザクションの開始と停止を処理できます これを確認してください

これら 2 つのステートメントを同時に実行するときに EntityFramework のデッドロックを防ぐ方法

この助けを願っています

于 2013-05-14T12:36:53.707 に答える