Если у меня есть три класса в структуре сущности.Извлечь только базовый класс из Entity Framework
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.Bases.ToList();
Он получает структуру наследования WHOLE ... Есть ли способ (без создания нового типа в EF) ТОЛЬКО возврат класса Base при просмотре базы данных?
К сожалению, я не могу войти в мой фактический счет ...
Может быть, я не сделал себе ясно, я хочу, чтобы вернуть все объекты (в том числе базы, левый и правый), но я хочу только Базовый класс должен быть возвращен, даже если в базе данных они являются действительными классами Left и Right.
OFTYPE было хорошим предложением, но оно отфильтровывает все мои объекты, потому что ни один из них не является базовым. Но я хочу вернуть только значения типа Base в объекте Base.
Любые идеи?
Это, к сожалению, труднее, чем вы могли бы ожидайте, по крайней мере, в LINQ to Entities. В Entity SQL вы можете использовать 'OFTYPE (ТОЛЬКО ...)'. Алекс Джеймс объясняет, как это сделать [в этом совете] (http://blogs.msdn.com/alexj/archive/2009/09/17/tip-35-how-to-write-oftypeonly-tentity.aspx "Совет. 35 - Как написать OfTypeOnly <TEntity>() "). –