次のようなオブジェクト階層があります。
public class Book
{
public virtual List<Page> Pages { get; set; }
public virtual List<Paragraph> Paragraphs { get; set; }
}
public class Page
{
public virtual List<Paragraph> Paragraphs { get; set; }
}
完全なオブジェクト階層をロードしたいのですが、次のように進めています。
Book book = (from b in context.Books.Include("Pages").Include("Paragraphs")
.Include("Pages.Paragraphs") where CONDITION).SingleOrDefault();
それを見つけて積んでいbook.Pages
ますが、新品です。book.Paragraphs
book.Pages[i].Paragraphs
null
データベースを調べると、データは正しいように見えます (関連列はすべて正しく入力されています)。
ラムダ構文も試しましたが、パラメーターがエンティティではなくコレクションである場合にどのように機能するかわかりません。たとえば、次のようなことができます。
.Include(s => s.Paragraphs.Select(p => p.Id == 1)
Paragraphs
しかし、ラムダ構文を使用して、各入力のコレクションをロードPage
するように指定する方法がわかりません。book.Pages
何か不足していますか、それとも Entity Framework の制限ですか? それが制限である場合、どうすれば回避できますか?