Выполнение запроса SP при использовании его в LINQ to SQL - PullRequest
0 голосов
/ 13 января 2012

У меня есть запрос, который возвращает набор результатов. И я хочу применить фильтр и сортировку результатов. Может ли кто-нибудь помочь мне понять, если я использую запрос в LINQ (я использую EF 4.0), смогу ли я получить отложенное выполнение, чтобы при применении фильтра / сортировки в объектной модели выполнение происходило только один раз (отложено)

Заранее спасибо!

С уважением, Bhavik

Ответы [ 2 ]

1 голос
/ 14 января 2012

Если запрос не принимает параметров, то да, так как вы могли бы создать представление, которое вызывает этот sproc, представить представление в вашей модели, а затем запросить его.

Если оно принимает параметры, тогда, если вам нужносортировка / фильтрация выполняется на стороне сервера, тогда я думаю, что вам нужно добавить sproc-обертку (или изменить существующий) для передачи сортировки и фильтрации для выполнения (в основном, сделать это вручную, но, по крайней мере, на стороне сервера).).

В качестве альтернативы, вы можете написать sql для выполнения на стороне сервера (вывести результаты во временную таблицу, затем выбрать из этой временной таблицы и применить фильтрацию, все же вручную), а затем выполнить ExecuteStoreQuery

1 голос
/ 13 января 2012

Нет, вы не можете отложить выполнение фильтрации linq для сохраненного процесса в sql. Сначала будет выполнен сохраненный процесс, будет возвращен набор результатов, после чего вы можете привести его к списку типов ваших объектов, после чего его можно отфильтровать с помощью Linq. Вы можете легко преобразовать набор результатов в список ваших объектов, используя context.Translate <>

Посмотрите эти ссылки:

Конечно, запрос (в вашем коде) не будет оцениваться, пока вы не приведете его к списку, поэтому вы можете объединить всю фильтрацию, которую вы хотите, с вашим набором результатов, а затем вызвать ToList () для получения результатов. *

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