Линк возвращает весь источник данных или только указанный столбец выбора? - PullRequest
0 голосов
/ 21 марта 2019

Имеются следующие запросы:

var myThingy =>
         (from rg in _repository.GetQueryable<TheThing>()
          where rg.Id == someId
          select rg);

var myThingysId =>
         (from rg in _repository.GetQueryable<TheThing>()
          where rg.Id == someId
          select rg.Id);

В первом я спрашиваю полный TheThingy, а во втором только его идентификатор.

Что я хочу знатьбудут ли они производить один и тот же SQL-запрос?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2019

Нет. Генерация разных запросов. Потому что пытается создать запрос с максимальной производительностью.

Просмотр всех запросов, которые он создает. Простой пример:

var sqlQuery = ((System.Data.Entity.Infrastructure.DbQuery<YouEntityType>)YouQuery).Sql;

Console.WriteLine("work query: "+sqlQuery);

Мой пример скриншот

enter image description here

3 голосов
/ 03 апреля 2019

Linq возвращает весь источник данных (все столбцы) в первом случае -

Код Linq:

from t in Persons select t

Сгенерированный SQL:

 SELECT [t0].[PersonID], [t0].[FirstName], [t0].[LastName] FROM [Person] AS [t0]

И возвращает только указанныйстолбцы во втором случае -

Код Linq:

from t in Persons select new {t.PersonID}

Сгенерированный SQL:

SELECT [t0].[PersonID] FROM [Person] AS [t0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...