Я пытаюсь вернуть первые 1000 строк из таблицы, однако, используя EF Core, я получаю полный набор данных до запуска .Take (1000).
API
[HttpGet("MyThing/{id}")]
public List<MyObj> ItemsReport(long id)
{
response = new List<MyObj>();
response = _reporting.GetNewEntries(id);
return response;
}
Отчетность
public virtual List<MyObj> GetNewEntries(long id)
{
var newEntries = new List<MyObj>();
var entries = _DbContext.ReportNewEntries
.OrderBy(a => long.Parse(a.Id))
.Where(a => long.Parse(a.Id) > id)
.Take(1000);
newEntries.AddRange(entries);
return newEntries;
}
DbContext
DbSet<MyObj> ReportNewEntries{ get; set; }
Мой желаемый запрос выглядит примерно так:
SELECT TOP (1000) *
FROM dbo.ReportNewEntries
WHERE CONVERT(bigint, Id) > 0
ORDER BY CONVERT(bigint, Id)
Мой текущий запрос, согласно профилировщику SQL:
SELECT * FROM dbo.ReportNewEntries
Таблицамонолитный, поэтому я хочу получить доступ к 1000 строк одновременно.Любые предложения о том, какую ошибку я делаю?