我有一个看起来像这样的对象层次结构:
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
检查数据库,数据看起来正确(关联列都正确填充)。
我也尝试了 lamda 语法,但看不到当参数是集合而不是实体时它是如何工作的,例如可以执行以下操作:
.Include(s => s.Paragraphs.Select(p => p.Id == 1)
但我看不出如何使用 lamda 语法来指定应该加载Paragraphs
每个Page
in的集合。book.Pages
我是否遗漏了什么,或者这是实体框架的限制?如果这是一个限制,我该如何解决它?