2013-02-23 5 views
1

У меня есть две модели в EF Code First:IEnumerable в отложенной загрузки 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; } 
} 

Когда нагрузки модель книги из БД, страницы свойство Null. Но при замене IEnumerable => ICollection работают ленивые загрузки, а страницы заполняются из БД. Как использовать IEnumerable и ленивую загрузку вместе?

+0

Я не думаю, что вы можете, так как ленивый загрузчик ищет что-то для перегрузки и нуждается в ICollection или производном, таком как IList. Я не понимаю, почему вы хотели бы использовать IEnumerable здесь вместо ICollection –

ответ

2

IEnumerable - неизменяемая коллекция, которую вы не можете изменить (добавить или удалить). EF не поддерживает этот тип, потому что внутри EF необходимо модифицировать коллекцию в модели.

Использовать ICollection вместо этого, ICollection наследует от IEnumerable, так что он не только по-прежнему получает отложенное выполнение (ленивая загрузка), но также имеет больше методов для изменения коллекции.

Смежные вопросы