У меня есть метод в моем сгенерированном частичном классе, например:
var pChildren = this.Children
.Skip(skipRelated)
.Take(takeRelated)
.ToList();
Когда я смотрю на свой SQL Server, я вижу, что сгенерированный код выполняет SELECT *.* FROM Children
Этот код взят непосредственно измой класс, я подтвердил, что порядок моего Пропуска / Взятия - ДО моего .ToList.
Если я удаляю .ToList, эта строка быстро (и SQL не отправляется в мою БД), но в тот момент, когда я пытаюсь foreach
просмотреть результаты, я получаю тот же SQL, отправленный в мою БД: SELECT *.* FROM Children
.
Есть ли что-то особенное, что мне нужно сделать при использовании .Skip и .Take в свойствах навигации моих сущностей?
update
Я попытаюсь получить фактический сгенерированный SQL, в данный момент я не настроен для этого.Я нашел первый, потому что он отображается в списке «недавних дорогих запросов» SSMS.
Выполнение этого:
var pChildren = this.Children
//.Skip(skipRelated)
//.Take(takeRelated)
.ToList();
возвращает ~ 4 000 000 строк и занимает ~ 25 секунд.
Выполнение этого:
var pChildren = this.Children
//.Skip(skipRelated)
.Take(takeRelated)
.ToList();
возвращает ~ 4 000 000 строк и занимает ~ 25 секунд.
Как я уже сказал, я возьму сгенерированный для них SQL-запрос и также создам их.