Re: EF6 code first, загрузка наследников, огромный select union
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 27.04.22 18:50
Оценка: +1
Здравствуйте, Osaka, Вы писали:

O>Есть модель EF из C#-классов, допустим, с базовым типом и 100 наследников различной степени вложенности.

O>Маппинг "таблица на конкретный тип" (каждая таблица содержи только записи своего типа, и все поля всех предков).
O>Читаем в модель через DBSet все строки типа Base.
Очевидно это потребует чтения всех таблиц и union all
Как иначе получить все экземпляры, унаследованные от base?

O>В некоторых случаях EF генерит простой sql "select ... from Base", а в других — огромный развесистый union всех наследных типов. (Размер sql-запроса может достигать сотен kb, и ползает всё это неприлично долго).

O>От чего зависит это поведение? Я пока обнаружил только что наследные типы включаются в запрос если в иерархии сущностей присутствуют абстрактные классы.
Покажи код запроса и какой sql он генеирует, пока непонятно является ли такой SQL избыточным или он генерирует ровно то, что нужно.

O>Можно ли данным поведением управлять не меняя модель, а в рантайме, по-разному для разных типов и навигационных свойств?

Можно, если сделать проекцию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.