Entity Framework(v4)エンティティのナビゲーションプロパティを仮想としてマークしないことの効果は何ですか?
遅延読み込みを使用せず、適切に積極的な読み込みを怠った場合、(読み込まれていない)プロパティにアクセスするとどうなりますか?
遅延読み込み以外に他の影響はありますか、それとも仮想ナビゲーションプロパティを必要とする主な機能ですか?
Entity Framework(v4)エンティティのナビゲーションプロパティを仮想としてマークしないことの効果は何ですか?
遅延読み込みを使用せず、適切に積極的な読み込みを怠った場合、(読み込まれていない)プロパティにアクセスするとどうなりますか?
遅延読み込み以外に他の影響はありますか、それとも仮想ナビゲーションプロパティを必要とする主な機能ですか?
2つの効果があります。1つは遅延読み込みですが、プロパティがそうでない場合は機能しませんvirtual
。ただし、遅延読み込みは必ずしも必要なものではありません。
2つ目は変化の検出です。純粋なPOCOを使用している場合、またはプロキシを使用しているがプロパティを作成しない場合はvirtual
、変更の検出がより複雑になります。
変化の検出について詳しくは、こちらをご覧ください。
遅延読み込みがPOCOオブジェクトでサポートされているかどうか疑問に思っている場合は、POCOでも遅延読み込みを取得できることを知って幸せになると思います。
POCOエンティティで遅延読み込みのサポートを受けるには、次の2つのことを行う必要があります。
遅延ロードするプロパティを仮想として宣言します。これらのプロパティは、ICollectionを実装する任意のコレクションタイプにすることも、1/0..1関係を表す参照にすることもできます。
コンテキストで遅延ロードを有効にする
MSDNの「EntityFrameworkのPOCO」の投稿を参照してください。