小巧玲瓏。分頁

dapper paging

我正在嘗試Dapper ORM,我正在查詢帖子表。

但我想得到分頁結果......

1 - 我該怎麼做?對此沒有幫助嗎?

2 - Dapper Query可以返回IQueryable嗎?

謝謝你,米格爾

一般承認的答案

1)Dapper沒有內置的分頁功能。但是在查詢中直接實現它並不太難。例:

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY InsertDate) AS RowNum, *
          FROM      Posts
          WHERE     InsertDate >= '1900-01-01'
        ) AS result
WHERE   RowNum >= 1 // *your pagination parameters
    AND RowNum < 20  //*
ORDER BY RowNum

需要SQL Server 2005+

2)Dapper返回IEnumerable<T>


熱門答案

您沒有指定數據庫或版本。如果您足夠幸運能夠使用全新的SQL Server 2012並且可以訪問MSDN,則可以使用閃亮的新OFFSETFETCH關鍵字。以下查詢將跳過20條記錄並返回下一條5條記錄。

SELECT * FROM [Posts]
ORDER BY [InsertDate]
OFFSET 20 ROWS
FETCH NEXT 5 ROWS ONLY

有關詳細信息,請查看http://msdn.microsoft.com/en-us/library/ms188385(v=sql.110).aspx#Offset

此外,複製Massive的方式並為IDbConnection編寫自己的擴展方法也很容易。這是Massive的代碼。

var query = string.Format("SELECT {0} FROM (SELECT ROW_NUMBER() OVER (ORDER BY {2}) AS Row, {0} FROM {3} {4}) AS Paged ", columns, pageSize, orderBy, TableName, where);


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因