Ответ 1
Используйте .Include(x => x.BCollection.Select(b => b.CCollection))
также описанный здесь.
Он работает и для каскада. Каждый раз, когда вам нужно искать свойство навигации загрузки, которое используется в коллекции .Select
.
Если у меня есть следующая модель класса...
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
со всеми зависимыми объектами в памяти с одним запросом базы данных?
Используйте .Include(x => x.BCollection.Select(b => b.CCollection))
также описанный здесь.
Он работает и для каскада. Каждый раз, когда вам нужно искать свойство навигации загрузки, которое используется в коллекции .Select
.