2011-08-15 6 views
0

背景:NHibernateは3、HttpModuleをとエラー

が作成/コミット/トランザクションのロールバックとセッションを管理するためにHttpModuleをを使用してNH3を使用したWebアプリケーションの開始を作成します。 エラーが発生するシナリオでは、単純なメッセージをユーザーに返すが、トランザクションをロールバックしたいと思う。 context.Hrrorイベントにフックすると、例外時に簡単にロールバックすることができますが、例外が捕捉されてユーザにわかりやすいメッセージが表示されるため、これは決して呼び出されません。

上記の問題のため、カスタム作業単位シナリオを作成し、要求のHTTPコンテキストに格納します。エラーが発生した場合は、RollbackRequiredフラグを設定し、これに基づいて作業ユニットにロールバックを実行させます。 HttpContextでセッションに格納する - これはCurrentSessionContextを使用する場合と同じですか?

誰かが他の考えを持っているなら私はすばらしいでしょう。

ありがとうございました。

答えて

0

HttpContextのセッションでの保存 - これはCurrentSessionContextの使用と同じですか?

はい、これはWebSessionContextの機能とほぼ同じです。

誰かが他の考えを持っているなら私はすばらしいでしょう。

例外をキャッチしているのであれば、それもロールバックしないでください。

ISession.Transaction.WasCommittedおよびISession.ITransaction.WasRolledbackは、トランザクションがロールバック/コミットされたかどうかを示します。ロールバックされず、コミットされていない場合は、HttpModuleでコミットできます。

+0

ありがとうございます。私はサービスや層で直接ロールバックしたくなかった。それをHttpModule/UoWの実装に任せておく方がよいと私には気付きました。 – TheITGuy

関連する問題