Условное включение EF по типу сущностиC#

Место общения программистов C#
Ответить
Anonymous
 Условное включение EF по типу сущности

Сообщение Anonymous »

Предположим, что архитектура:

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

public class Mammal
{
public int Id { get; set; }
public string Name { get; set; }
}

public class Dog : Mammal
{
public int TailId { get; set; }
public Tail Tail { get; set; }
}

public class Bat : Mammal
{
public int WingId { get; set; }
public Wing Wing { get; set; }
}

public class Buffalo : Mammal
{
public virtual ICollection Horns { get; set; }
}

public class Tail
{
public int Id { get; set; }
...
}

public class Wing
{
public int Id { get; set; }
...
}

public class Horn
{
public int Id { get; set; }
...
}
< /code>

Теперь мой контекст: < /p>

public class MyContext : DbContext
{
public DbSet Mammals { get; set; }
}
< /code>

Итак, я хочу сделать только один запрос SQL и включить (и загрузить) все вложенные объекты, что -то вроде: < /p>

var query = myContext.Mammals
.IncludeIfTypeIs(d => d.Tail)
.IncludeIfTypeIs(b => b.Wing)
.IncludeIfTypeIs(b => b.Horns)
...
...
;
Я знаю, что могу сделать это отдельно, но не хочу, потому что у меня много сущностей, и мне нужно минимизировать запросы к базе данных.

Я не хочу использовать отложенную загрузку, поскольку при этом также будет выполняться множество запросов к базе данных.

Как этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/340 ... ntity-type
Ответить

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

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

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

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

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