-1

他のタイプのオブジェクトセット エンティティも削除せずに、パーツまたは完全なオブジェクトセットを解放 (デタッチ) するための非常に高速な方法を探しています。

このシナリオでは、メイン オブジェクト コンテキストを持つ多くのオブジェクト セットを使用します。一部のテーブルには、将来、非常に大量のデータが含まれることになるため、メモリに完全にロードしたくありません。昨年のデータのみが最初のフィルターで読み込まれ、ユーザーが必要に応じてフィルターを別のものに変更できます。フィルタリング部分は簡単に機能しますが、フィルタが以前にまだロードされていないエンティティのみをロードする場合、古いエンティティは objectcontext によってメモリに保持されます。非常に高速なコンピューターでは、1 ~ 2000 個のエンティティをデタッチするのに 4 ~ 5 秒かかる場合があります。これは私にとっても容認できません。特に、フィルターを 1 回交換するだけで、その数が 40000 を超える可能性があります。

4

1 に答える 1

2

使用するように設計されているため、Entity Framework を使用している場合、これは問題になりません。

EF は、有効期間が短いオブジェクト コンテキストを持つように設計されています。操作ごとにコンテキストを作成し、操作が完了したら破棄します。オブジェクト コンテキストを長期間維持することは悪い考えですが、デスクトップ アプリケーションでは Web アプリほど悪くはありません。

コンテキストを長期間維持しても得られるものはほとんどありません。

EF には、操作が完了したときにコンテキストを破棄するように設計されているため、オブジェクト グラフからオブジェクトを削除する機能はありません。コンテキストの破棄は、メモリを解放するための意図された方法です。

于 2012-12-25T11:41:02.240 に答える