EF 4.1, Code-First: готовая загрузка каскадных коллекций - PullRequest
15 голосов
/ 21 марта 2011

Если у меня есть следующая модель класса ...

public class A
{
    public int AId { get; set; }
    public ICollection<B> BCollection { get; set; }
}

public class B
{
    public int BId { get; set; }
    public ICollection<C> CCollection { get; set; }
}

public class C
{
    public int CId { get; set; }
}

... возможно ли загружать объект типа A из базы данных со всеми включенными каскадными коллекциями?

Я могу включить BCollection следующим образом:

A a = context.ASet.Where(x => x.AId == 1)
          .Include(x => x.BCollection)
          .FirstOrDefault();

Могу ли я также как-то включить CCollection всех загруженных B объектов, чтобы я получил A со всеми зависимыми объектамив памяти с одним запросом к базе данных?

1 Ответ

22 голосов
/ 21 марта 2011

Используйте .Include(x => x.BCollection.Select(b => b.CCollection)) также , описанное здесь .

Работает также для каскада. Каждый раз, когда вам нужно загрузить свойство навигации, которое является коллекцией, используйте .Select.

...