C# デスクトップ アプリケーションのすべてのフォーム/プレゼンターに新しいセッションを使用することをお勧めします。そのため、タブ インデックスが変更されるたびにセッションを閉じることにしました。DB アクティビティは、新しいセッションを開きます。各タブにツリービューがあり、必要なときにデータが正確にロードされます (たとえば、対応するノードが開かれたとき)。
次の 2 つの異なるシナリオがあります。
- タブを離れて再度アクセスする前に、すでに確認していたリーフ ノードをクリックします。
- そのプログラムの実行で一度も見られなかった葉ノードをクリックします (ただし、親ノードが展開されているので見ることができます)
最初のシナリオでは、すべて問題ありません。2 番目のシナリオでは、LazyInitialization Exception が発生します。
1) セッションが閉じられているにもかかわらず、ノードにデータをロードさせたり、データを記憶させたりすることはできますか? プログラムに 1 つのセッションしか使用しないという考えは好きではありません。
2) ツリーの状態を覚えて、それを折りたたんで、必要なノードを再展開すればうまくいくと思いますか? ユーザーがデータを開いたときと同じようにデータをロードしますか?
敬具、期待