Структура сущностей:как вернуть базовый тип из L2E

StackOverflow https://stackoverflow.com/questions/108598

  •  01-07-2019
  •  | 
  •  

Вопрос

Рассматривая следующую архитектуру:

  • базовый объект "Сущность"
  • производный объект "Запись: База"
  • и еще один производный объект "CancelledEntry:Запись"

В EntitySQL я могу написать следующее:

[...] where it is of (only MyEntities.Entry) [...]

возвращать только объекты типа Entry и без Entity или CancelledEntry.

В linq to sql следующая команда вернет объекты типа Entry и CancelledEntry.

EntityContext.EntitySet.OfType<Entry>()

Какой синтаксис / функция использовать для возврата только объектов типа Entry?

Это было полезно?

Решение

Почему бы вам не применить метод расширения к IQueryable< Entry > вызвал ApplyBaseEntryFilter(), который применил бы этот фильтр и вернул IQueryable< Запись >.

Это пример того, как повторно использовать фрагменты запроса linq.Использование методов расширения в IQueryable< Entity > - отличный способ повторного использования запросов, поскольку вам никогда не понадобится копировать и вставлять фрагменты запроса в ваше приложение, надеюсь, это поможет.

Другие советы

Хорошо, я нашел частичное решение:

EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )

Однако это довольно ужасно, поскольку, если я создаю новый производный объект, мне приходится выполнять все запросы и специально добавлять условие для его удаления.

Должно быть лучшее решение

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top