Вызывает ли вызов Select () или GroupBy () в Linq к сущностям запросы к базе данных? - PullRequest
8 голосов
/ 22 июня 2010

Мне трудно сказать, какие операции в linq вызывают команду SQL для базы данных.

Я знаю, что вызов ToList () или итерация с / foreach приведет к выполнению запроса, но выберите Select.и GroupBy заставляет код выполняться в базе данных?

Ответы [ 3 ]

7 голосов
/ 22 июня 2010

Нет, нет, если они правильно вызваны на IQueryable, а не на IEnumerable, они скомпилированы как выражения и позже будут переведены в SQL.подсказка intellisense, чтобы увидеть, какой метод будет вызываться в данный момент.Если первым параметром метода расширения является IEnumerable, а не IQueryable, вы столкнетесь с запросом к базе данных.

2 голосов
/ 23 июня 2010

Нет, Select, GroupBy и большинство других методов не вызовут запрос к базе данных. Запрос к базе данных обычно выполняется только тогда, когда вы делаете что-то, что требует известных результатов, например, звоните Count или ToList, как вы упомянули.

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

1 голос
/ 22 июня 2010

Нет, вызов Select () и GroupBy () не ударит по базе данных. Только когда требуется фактический результат (при перечислении с использованием ToList (), ToArray (), Count () и т. Д.), Запрос будет выполнен к базе данных.

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