DataSource for Entity Framework for WinForms
Unmanaged 仮想モードの制限
プログラミングガイド > 仮想モード > Unmanaged 仮想モードの制限

Managed オプションと Unmanaged オプションの違いは、データをサーバーから取得する際に見られます。Managed モードでは、"仮想モードを制御中" のグリッドがデータを必要とするとき、たとえばユーザーがグリッドをスクロールしたりグリッド内を移動したときに、データが取得されます。Unmanaged モードでは、連結コントロールがデータ要求を行うたびにサーバーからデータがフェッチされます(データがキャッシュにない場合)。このとき、どのコントロールがどのような目的でデータを要求したかは考慮されません。データソースは、データ要求に含まれる各行の前後の ClientViewSource.PageSize 分の行をフェッチします。ただし、Managed モードとは異なり、このモードでは、連結コントロールに表示される行が不明なので、これらの行は保持されません。データソースは、現在の行と最後に要求された行だけを保持します(それらの直前の ClientViewSource.PageSize 分の行と直後の ClientViewSource.PageSize 分の行を含む)。他の行は保持されません。つまり、Entity Framework DataSource がキャッシュをクリーンアップ/圧縮する必要があるときに、解放されてキャッシュから削除される可能性があります。ただし、多くのケースで、これが問題になることはありません。また、通常は、次の点に注意することで問題を回避できます。

Unmanaged 仮想モードでは、1つのデータソースに複数のスクロール可能コントロールを連結しないでください。 TextBox などの単純なコントロール(1つの行に連結)は、必要な数だけ連結することができます。また、任意のグリッド、リスト、または他の "スクロール可能" なコントロールを(1つの行ではなくデータセット全体に)連結することもできます。ただし、データセット内の互いに ClientViewSource.PageSize より離れた2つの位置(行)にスクロールすることがある2つのスクロール可能なコントロールを連結してはなりません。そうすると、最後に要求された一方の行だけが保持され、もう一方の行は Entity Framework DataSource によって(予期できないタイミングで)解放されてしまうことがあるためです。