0

C# デスクトップ アプリケーションのすべてのフォーム/プレゼンターに新しいセッションを使用することをお勧めします。そのため、タブ インデックスが変更されるたびにセッションを閉じることにしました。DB アクティビティは、新しいセッションを開きます。各タブにツリービューがあり、必要なときにデータが正確にロードされます (たとえば、対応するノードが開かれたとき)。

次の 2 つの異なるシナリオがあります。

  • タブを離れて再度アクセスする前に、すでに確認していたリーフ ノードをクリックします。
  • そのプログラムの実行で一度も見られなかった葉ノードをクリックします (ただし、親ノードが展開されているので見ることができます)

最初のシナリオでは、すべて問題ありません。2 番目のシナリオでは、LazyInitialization Exception が発生します。

1) セッションが閉じられているにもかかわらず、ノードにデータをロードさせたり、データを記憶させたりすることはできますか? プログラムに 1 つのセッションしか使用しないという考えは好きではありません。

2) ツリーの状態を覚えて、それを折りたたんで、必要なノードを再展開すればうまくいくと思いますか? ユーザーがデータを開いたときと同じようにデータをロードしますか?

敬具、期待

4

1 に答える 1

1

ツリービューをフィードする既存のデータを含むタブに移動すると (初期化されていない例外がスローされます)、新しく作成されたセッションに再アタッチして、遅延読み込みを再度有効にします。明白でないものを使用してsession.Lock(rootentity, LockMode.None);、オブジェクト グラフを再アタッチします

于 2012-07-27T08:07:09.293 に答える