私は、NHibernate でのセッション管理の問題を解決しようと、かなりの時間を費やしています。私の問題の多くは、IoC と AOP の概念に関する知識が不足しているためだと思います。少なくとも、ファビオ・マウロが私に指示し続けているところから、私はそう考えています。
とにかく、私の問題は、「取得」呼び出しを行い、結果をグリッドにバインドする勝利フォーム アプリケーションがあることです。バインド後、ユーザーはある種の「書き込み」アクションを実行できますが、その結果、使用コンセプトごとにセッションを使用しようとして、書き込み後にセッションが閉じられます。次に、ユーザーがグリッドをスクロールすると、遅延読み込みが開始され、セッションが閉じられ、例外が発生します。
ビューにセッションを認識させたくありません。ユーザーがフォームを閉じたときに KillAllSessions を送信したくありません。さらに、ユーザーはいつでも複数のフォームを開いている可能性があり、その方法に関連する問題がさらに複雑になります。私は本質的に、これらすべてが「舞台裏」で機能することを望んでいます。
したがって、これまでの私の考えは、遅延読み込み呼び出しをインターセプトし、セッションが開いているかどうかを確認し、再度開いていない場合は情報を取得してから再度閉じることです。ただし、私が知る限り、これは大したことではありませんが、基本的には遅延読み込みがどのように機能するかです。これはプロキシ ファクトリ (NHibernate.Bytecode.Castle) によってインターセプトされ、セッションを使用してデータを取得します。したがって、実際にその呼び出しをインターセプトし、セッションを再度開いた後、元の意図したインターセプトに渡す必要があります。それが私の考えです。
私の質問は基本的にまず第一に、これはこれを行う正しい方法ですか? 第二に、どこから始めればよいかさえわかりません。メソッド呼び出しのインターセプトを行ったことはありません。理論的には知っていましたが、実際には知りませんでした。Rhino Commons など、この種のことを行うライブラリがあることは知っていますが、この機会に学び、より優れたプログラマーになりたいと考えています。私は AOP と Context Bound Objects を理解しようとしていますが、現在は理解していません。あなたの何人かが男を助けてくれませんか?