在延迟加载EF中IEnumerable

时间:2013-02-23 19:58:52

标签: entity-framework ef-code-first lazy-loading

我在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 =&gt; ICollection,延迟加载工作和来自DB的页面填充。如何使用IEnumerable和延迟加载?

1 个答案:

答案 0 :(得分:2)

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

使用ICollection代替,ICollection继承自IEnumerable,因此它不仅仍然具有延迟执行(延迟加载)的目的,而且还有更多方法来修改集合。