Получите только базовый класс от Платформы Объекта

Если у меня есть три класса в платформе объекта.

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();

Однако я теперь хочу ТОЛЬКО возвратить базовый класс. Выполнение Unfortunalty

DBContext.Bases.OfType<Base>.ToList(); 

делает то же как DBContext. Основания. ToList ();

Это получает ЦЕЛУЮ структуру наследования... Есть ли какой-либо путь (не делая новый тип в EF) ТОЛЬКО возврата класса Основа при просмотре Основного набора?


Извините я не могу войти в свою фактическую учетную запись...

Возможно, я не ясно выражался, я хочу возвратить все объекты (включая Основу, Левую и правую), но я только хочу, чтобы Базовый класс был возвращен, даже если в базе данных они - фактические Левые и правые классы.

OFTYPE был хорошим предложением, но он отфильтровывает все мои объекты, потому что ни один не фактический Базовый тип. Но я хочу возвратить только значения Базового типа в объекте Базового типа.

Какие-либо идеи?

15
задан casperOne 2 August 2012 в 16:17
поделиться

1 ответ

Предполагая, что вы можете использовать LINQ, не могли бы вы использовать что-то вдоль линий следующего быстрого и грязного примера?:

var result = from item in DBContext.Bases.ToList()
            where (!item.GetType().IsSubclassOf(typeof(Base)))
           select item;
1
ответ дан 1 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: