私の場合、リクエストごとに 1 つ作成しDataContext
、TransactionScope
. したがって、例外がない場合は、例外をキャッチしてトランザクションをロールバックすることも、しないこともできます。
現在、メインのルート抽象コントローラー クラスで依存関係を宣言してTransactionScope
おり、トランザクションはリクエストごとに自動作成され、そのコントローラーのOnActionExecuted
メソッドでトランザクションをコミットするかしないかのいずれかです。
結局のところ、少なくとも以前のAuthorizeAttribute
トランザクションの作成が必要です。いくつかのリクエストで s が呼び出され、それらが DB 接続も使用している場合にそう思われます。
また、私が行う方法よりも、リクエストごとに 1 つのトランザクションを作成するためのよりクリーンな方法があるに違いないと思います。
1 では、nhibernate のような他の ORM を使用せずに、リクエストが作成された瞬間にコントローラーのアクションのトランザクションを作成し、そのリクエストの最後にそれらを破棄するための最良の方法は何ですか?
2 同じ ID を持つアクションが Web サーバーによって同時に実行されないように、ID を指定して、コントローラーのアクションを何らかの方法でチャネルに分割する方法はありますか?