2013-02-23 68 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繼承,所以它不僅仍然得到延遲執行(延遲加載)的目的,而且還有更多的方法來修改集合。