Возврат IQueryable и ObjectQuery при использовании LINQ to Entities

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

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

Нужно ли мне бросать?

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

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

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


person mark smith    schedule 04.09.2010    source источник


Ответы (1)


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

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

person Ladislav Mrnka    schedule 04.09.2010
comment
спасибо .. хорошо, queryable это тогда :-) ... я не думаю, что мне нужны какие-либо расширенные функции объектного запроса ... эмммм, мне нужно выполнить приведение .. как из linq для запроса сущностей, это объектный запрос, который возвращается... поэтому, когда я возвращаю объект из своего метода... мне нужно приводить или что-то в этом роде? Еще раз спасибо - person mark smith; 05.09.2010
comment
Спасибо большое! как раз то, что мне было нужно! - person mark smith; 05.09.2010