我在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和延迟加载?
答案 0 :(得分:2)
IEnumerable
是不可变的集合,您无法修改(添加或删除)。 EF不支持此类型,因为内部EF需要修改模型中的集合。
使用ICollection
代替,ICollection
继承自IEnumerable
,因此它不仅仍然具有延迟执行(延迟加载)的目的,而且还有更多方法来修改集合。