Предполагать:
BaseEntity
ChildEntity : BaseEntity
Проблема заключается в том, чтобы получить базовые объекты эффективным способом. Я знаю, что работает такой тип запроса:
var results = context.BaseEntities.Where(entity => !(entity is ChildEntity) );
Однако это очень склонно к поломке, так как простое добавление другого расширения к BaseEntity
, например ChildEntityTwo : BaseEntity
, нарушит запрос (запрос будет включать типы BaseEntity
и ChildEntityTwo
.
Кроме того, у меня еще не было возможности профилировать его, но я подозреваю, что запрос загружает все объекты и фильтрует их в памяти, но я могу ошибаться с этим.
Обратите внимание, что решение context.BaseEntities.OfType<BaseEntities>()
на самом деле будет включать и загружать все объекты! Это работает только тогда, когда вам нужен класс конечной точки, например ChildEntityTwo