2013-02-23 80 views
1

的IEnumerable我在EF代码前两种模式:在延迟加载EF

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一书的模式,页面属性为null。但是,当替换IEnumerable => ICollection时,惰性加载工作和页面填充数据库。如何使用IEnumerable和惰性加载在一起?

+0

我不认为你可以作为懒惰的加载程序正在寻找重载的东西,并需要一个ICollection或派生如IList。我不明白为什么你甚至想在这里使用IEnumerable而不是ICollection – 2013-02-23 21:07:56

回答

2

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

改为使用ICollectionICollectionIEnumerable继承,所以它不仅仍然得到延迟执行(延迟加载)的目的,而且还有更多的方法来修改集合。