Вызов выбирает () или GroupBy () в Linq к триггеру объектов, запрашивая базу данных?

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

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

8
задан user169867 22 June 2010 в 19:55
поделиться

3 ответа

Нет, если они правильно вызываются в IQueryable , а не в IEnumerable , они компилируются как выражения и будут позже будет переведен на SQL.

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

7
ответ дан 5 December 2019 в 17:34
поделиться

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

1
ответ дан 5 December 2019 в 17:34
поделиться

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

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

2
ответ дан 5 December 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: