1

我在 EF Code First 中有两个模型:

public class Book
{
 public int Id { get; set; }
 public virtual IEnumerable<Page> Pages { get; set; }
}

public class Page
{
 public int Id { get; set; }
 public int BookId { get; set; }
 public Book Book { get; set; }
}

从 DB 加载 Book 模型时,Pages 属性为 Null。但是当替换 IEnumerable => ICollection 时,延迟加载有效并且页面从 DB 中填充。如何同时使用 IEnumerable 和延迟加载?

4

1 回答 1

2

IEnumerable是您无法修改(添加或删除)的不可变集合。EF 不支持这种类型,因为 EF 内部需要修改模型中的集合。

ICollection相反,使用ICollection继承自,IEnumerable因此它不仅仍然可以获得延迟执行(延迟加载)的目的,而且还有更多修改集合的方法。

于 2013-02-24T07:20:25.387 回答