Код: Выделить всё
public abstract class A
{
public enum T { B_, C_, D_ }
public int Id { get; set; }
public int? ParentId { get; set; }
public A? Parent { get; set; }
public virtual ICollection Children { get; set; } = []; // an B has Cs and a C has Ds as children
public virtual ICollection Es { get; set; } = [];
}
public class B : A
{
}
public class C : A
{
}
public class D : A
{
public virtual ICollection Fs { get; set; } = [];
}
public class E
{
}
public class F
{
}
Код: Выделить всё
private IQueryable Bs => _dbContext.Bs
.Include(b => b.Children)
.Include(b => b.Es)
.ThenInclude(c => c.Children)
// how to include c.Es ?
.ThenInclude(d => (d as D).Fs)
// and how to I include d.Es ?
Изменить
Предположим, мы расширяем классы модели следующим образом:
Код: Выделить всё
public class E
{
public int Id { get; set; }
public int GId { get; set; }
public virtual G G { get; set; }
}
public class G
{
public int Id { get; set; }
public string Name { get; set; } = string.Empty;
}
Код: Выделить всё
public IQueryable Bs => _dbContext.Bs
.Include(b => b.Es)
.ThenInclude(e => e.G)
.Include(b => b.Es.OrderBy(e => e.G.Name);
Подробнее здесь: https://stackoverflow.com/questions/785 ... er-loading
Мобильная версия