Entity Framework 5 で遅延読み込みを理解するのに問題があります。遅延読み込みを使用すると、関連するエンティティが要求されるまで読み込まれないことを理解しています。
「遅延読み込みを使用する場合、最初のクエリはターゲット エンティティ セットのみを取り込みます。しかし、ナビゲーション プロパティにアクセスするたびに、ストアに対して別のクエリが発行され、関連するエンティティが読み込まれます。(参照)」
次の 2 つのクラスを持つ ASP.NET Web API プロジェクトがあります。
public class Farm
{
public int FarmId { get; set; }
public virtual ICollection<LandUnit> LandUnits { get; set; }
...
}
public class LandUnit
{
public int LandUnitId { get; set; }
...
}
LazyLoadingEnabled = true を設定し、POCO クラスをガイドライン (参照) に準拠させていますが、スキャフォールディングを使用して FarmController を作成し、フィドラーを介して呼び出すと、次のように表示されます。
JSON
{}
...
LandUnits
{}
...
LazyLoadingEnabled = false を設定すると、次のようになります。
JSON
{}
...
LandUnits=(null)
遅延読み込みの基本を誤解していますか? 起こっていることは、定義が述べていることの反対であるように私には思えます。遅延読み込みがオフの場合、関連するエンティティは読み込まれません。遅延読み込みがオンの場合、関連するエンティティが読み込まれます。