Вопрос производительности LINQ-to-SQL - PullRequest
0 голосов
/ 20 октября 2010

Я получаю IQueryable из своей базы данных, а затем я получаю другой IQueryable из этого первого, то есть я фильтрую первый.Мой вопрос - это влияет на производительность?Сколько раз код будет вызывать базу данных?Спасибо.

Код:

DataContext _dc = new DataContext();

IQueryable offers =
(from o in _dc.Offers
select o);

IQueryable filtered =
(from o in offers
select new { ... } );

return View(filtered);

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Код, который вы дали, никогда не вызовет базу данных, так как вы никогда не используете результаты запроса в каком-либо коде.

Коллекции IQueryable не заполняются, пока вы не выполните их итерацию ...не повторять ничего в этом примере кода (ах, прелесть ленивой инициализации).

Это также означает, что каждый из этих операторов будет выполняться как отдельный запрос к базе данных, что не приводит к снижению производительностиболее двух независимых запросов.

0 голосов
/ 20 октября 2010

ТАК не является заменой для инструментов разработчика. Есть много хороших бесплатных инструментов, которые могут точно сказать, во что этот код переводится и как он работает. Используйте Reflector для этого метода и посмотрите, какой код сгенерирован, и объясните себе, что оттуда происходит.

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