Возвращение IQueryable против ObjectQuery при использовании LINQ to Entities - PullRequest
3 голосов
/ 04 сентября 2010

Я читал, когда использовал LINQ для перехвата запроса типа IQueryable до его обработки, но когда запрос обработан, он больше не IQueryable, а ObjectQuery.

В этом случае правильно ли писать методы из моего слоя (уровня репозитория) для возврата IQueryable?

Нужно ли приводить?

Зачем мне возвращать ObjectQuery?

Я пришел из среды LINQ to SQL, где вещи всегда были IQueryable, но EF, похоже, изменил это.

Любая помощь действительно ценится.

1 Ответ

9 голосов
/ 05 сентября 2010

Мои репозитории всегда возвращают IQueryable.Причина этого заключается в том, что IQueryable не зависит от EF, а ObjectQuery -.Поэтому, если я хочу, чтобы другие мои уровни были невежественными, я не хочу вводить зависимость от ObjectQuery.

ObjectQuery - это реализация IQueryable с несколькими дополнительными функциями.Первая функция, которую вы быстро обнаружите, - это функция «Включить», которая необходима для быстрой загрузки свойств навигации (связанных объектов).Вторая особенность - EQL - язык запросов сущностей.EQL - это второй способ запроса вашей концептуальной модели.Синтаксис аналогичен SQL.Вы можете написать простой запрос в виде строки, передать его конструктору ObjectQuery и выполнить запрос или использовать его в Linq-To-Entities.

...