Если у меня есть три класса в инфраструктуре сущности.
class Base {}
class Left : Base {}
class Right : Base {}
и я вызываю DBContext.Bases.ToList();
Это возвращает все экземпляры Base
, полностью введенные в их ассоциированные унаследованные типы, как заметили некоторые люди, производительность EF на больших структурах наследования невелика, если не сказать больше. Мой фактический запрос в моем проекте длится 600 строк, просто для возврата одного объекта и требуется 2 секунды для генерации.
Они запрашивают выполнение намного быстрее, если вы скажете, какой тип будет возвращаться, поскольку он не должен объединяться по всей структуре. например.
DBContext.Bases.OfType<Left>.ToList();
or
DBContext.Bases.OfType<Right>.ToList();
Однако теперь я хочу ТОЛЬКО вернуть базовый класс. Несчастье делает
DBContext.Bases.OfType<Base>.ToList();
делает то же самое, что и DBContext.Bases.ToList();
Он получает структуру наследования WHOLE... Есть ли способ (без создания нового типа в EF) ТОЛЬКО, возвращающий класс Base при просмотре базовой коллекции?
Извините, что я не могу войти в мою реальную учетную запись...
Возможно, я не понял, я хочу вернуть все объекты (включая Base, Left и Right), но я хочу, чтобы возвращался Base-класс, даже если в базе данных они являются действительными классами Left и Right.
OFTYPE было хорошим предложением, но оно отфильтровывает все мои объекты, потому что ни один из них не является базовым типом. Но я хочу вернуть только значения типа Base в объекте Base type.
Любые идеи?