EF 4.1, Code-First: надежная загрузка каскадных коллекций

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

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

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

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