EF DbContext.Set <T>только отфильтрованная запись - PullRequest
1 голос
/ 20 февраля 2012

Я новичок в EF, так что будьте немного осторожнее, сейчас я использую 4.2. Я просто хочу знать, как лучше всего ограничить EF загрузкой только отфильтрованных данных вместо извлечения всех данных из БД и затем применив к нему фильтры.

Я вижу DbContext.Set () или DbContext.Set (). AsQueryable (); Не уверен насчет функции «Где», но, похоже, она работает по тому же принципу, т. е. уже загружает все данные для любой таблицы и применяет к ним фильтры, разве это не станет серьезным ударом по производительности? Или я что-то здесь упускаю? Я не хочу, чтобы EF получал все данные из таблицы, а только отфильтровал. как это сделать?

спасибо

1 Ответ

1 голос
/ 21 февраля 2012

Linq-запросы переводятся в SQL, поэтому, если вы используете .Where () для запроса, он должен выполняться на сайте db, а не в вашем приложении. Обратите внимание, что если вы сделаете что-то вроде .ToList () /. ToArray (), а затем попробуете применить .Where () поверх него, фильтрация будет происходить на клиентском сайте, так как .ToList () заставит выполнение запроса до применения фильтр

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