Я немного новичок в subsonic (то есть, оцениваю 3.0.0.3) и столкнулся со странным поведением в GetPaged (int pageIndex, int pageSize). Когда я выполняю метод, он делает два вызова SQL. Есть идеи почему?
Подробнее
Допустим, у меня есть таблица "Культуры" с 200 строками. В моем коде я делаю что-то вроде ...
var sonicCollection = from c in RTE.Culture.GetPaged(1, 25)
select c;
Теперь я ожидаю, что это выполнит один запрос, возвращающий первые 25 записей в моей таблице культур. Когда я смотрю профилировщик SQL, я вижу два запущенных запроса.
Первый это -
SELECT [dbo].[Cultures].[cultureCode], [dbo].[Cultures].[cultureName]
FROM [dbo].[Cultures]
Тогда это -
SELECT *
FROM (SELECT ROW_NUMBER() OVER (
ORDER BY cultureID ASC) AS Row,
[dbo].[Cultures].[cultureCode], [dbo].[Cultures].[cultureName]
FROM [dbo].[Cultures]
)
AS PagedResults
WHERE Row >= 1 AND Row <= 25
Я ожидаю, что второй запрос будет пролонгирован, поскольку он возвращает 25 строк, которые я вежливо запросил от дозвукового. Первый запрос, однако, возвращает 200 строк (по крайней мере, согласно профилировщику SQL).
Есть идеи, что происходит?