Как включить свойство таблицы для каждой иерархии в быструю загрузку EF CoreC#

Место общения программистов C#
Ответить
Anonymous
 Как включить свойство таблицы для каждой иерархии в быструю загрузку EF Core

Сообщение Anonymous »

Рассмотрим следующие классы моделей:

Код: Выделить всё

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
{
}
Мой вопрос: как мне включить все в один запрос B, используя быструю загрузку и свободный синтаксис, поэтому в основном я хочу сделать что-то вроде следующего (что не удается из-за выдачи исключения в последнем thenInclude):

Код: Выделить всё

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 ?
Я пробовал привести C.Children с помощью Cast() linq или фильтровать с помощью OfType(), но сообщение об исключении (которое затем выдается) сообщает мне, что доступны только «Where», «OrderBy» и «ThenBy», и приведение должно выполняться с использованием оператора «as» или явного приведения, ни один из них не работает в показанном примере.

Подробнее здесь: https://stackoverflow.com/questions/785 ... er-loading
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»