Entity Framework: как вернуть базовый тип из L2E - PullRequest
0 голосов
/ 20 сентября 2008

Учитывая следующую архитектуру:

  • базовый объект «Сущность»
  • производный объект 'Entry: Base'
  • и еще один производный объект 'CancelledEntry: Entry'

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

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

для возврата только объектов типа Entry, но не Entity или CancelledEntry.

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

EntityContext.EntitySet.OfType<Entry>()

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2008

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

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

1 голос
/ 20 сентября 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...