Pimpant. Pagination

dapper paging

Question

J'essaie Dapper ORM et j'interroge une table Posts.

Mais j'aimerais obtenir des résultats paginés ...

1 - Comment puis-je le faire? N'y a-t-il pas d'aide pour cela?

2 - Dapper Query peut-il retourner une IQueryable?

Merci, Miguel

Réponse acceptée

1) Dapper n’a pas de fonction de pagination intégrée. Mais ce n'est pas trop difficile de l'implémenter directement dans la requête. Exemple:

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

Requiert SQL Server 2005+

2) Dapper renvoie un IEnumerable<T> .


Réponse populaire

Vous n'avez pas spécifié de base de données ou de version. Si vous avez la chance de pouvoir utiliser le tout nouveau SQL Server 2012 et d'avoir accès à MSDN, vous pouvez utiliser les nouveaux mots-clés OFFSET et FETCH . La requête suivante ignore 20 enregistrements et renvoie les 5 suivants.

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

Consultez http://msdn.microsoft.com/en-us/library/ms188385(v=sql.110).aspx#Offset pour plus d'informations.

En outre, il est assez facile de copier comme le fait Massive et d’écrire votre propre méthode d’extension pour IDbConnection. Voici le code de 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);



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi