0

顧客のリストと顧客のチケットのリストを含むナビゲーションバーを含むアプリケーションがあります。

メインウィンドウのイメージ

左側のリストで顧客が選択されている場合 - 右側のリストでチケットを読み込んでいます。MainWindow の開始時に NHibernate セッションが開きます。ViewModel の BackgroundWorker で行っているすべての顧客のチケットを読み込みます。リストには現在約5000人の顧客がいます。1 人の顧客を選択してから次の顧客をすばやく選択すると (チケットのリストの最初の顧客がまだロードされていない場合)、nhibernate からエラーが発生します。エラーの違い: コレクションはフラッシュによって 2 回処理されました。コレクションへの共有参照が見つかりました。また、チケットのリストがグリッドにロードされていません。このフリーズ UI とチケットは大きなカウントになる可能性があるため、メイン UI スレッドでチケットをロードする必要はありません。アプリケーションで NHibernate セッションをどのように操作するのが正しいでしょうか?

4

1 に答える 1

0

私はここで説明されているようにそれを行います

バックグラウンド スレッドでステートレス セッションを開いてメイングリッドのデータをロードし、子ウィンドウごとに新しいセッションを開き、そこに選択した項目を changetracking でロードします。

于 2012-04-26T10:57:11.353 に答える