Я использую Net Core 2.2 с Pomelo EntityFramework с базой данных MySql.
Следующий код:
return context.SomeTable
.OrderByDescending(item => item.ExpiredTime)
.Where(item => item.FinishedTime.HasValue
&& item.ExpiredTime.HasValue
&& item.ExpiredTime.Value < DateTime.UtcNow
&& item.IsArchive.GetValueOrDefault(false) == false/* is null or false*/)
.Take(500)
.Select(i=>new ItemWrapper(i))
.ToArray();
Возвращает следующий MySql:
SELECT `item`.`Id`, `item`.`ExpiredTime`, `item`.`FinishedTime`,
`item`.`IsArchive`
FROM `SomeTable` AS `item`
WHERE (`item`.`FinishedTime` IS NOT NULL AND `item`.`ExpiredTime` IS NOT
NULL) AND (`item`.`ExpiredTime` < UTC_TIMESTAMP())
ORDER BY `item`.`ExpiredTime` DESC
Похоже, что Take(500)
не отражается в запросе.
Я ожидаю увидеть limit = 500
в запросе sql.
Изменить 1:
Я использую Select(i=>new ItemWrapper(i)
для создания нового класса для объекта результата, похоже, это корень проблемы.
Что я делаю не так?