Apuesto. Paginación

dapper paging

Pregunta

Estoy intentando Dapper ORM y estoy consultando una tabla de Publicaciones.

Pero me gustaría obtener resultados paginados ...

1 - ¿Cómo puedo hacer esto? ¿No hay un ayudante para esto?

2 - ¿Puede Dapper Query devolver un IQueryable?

Gracias, Miguel

Respuesta aceptada

1) Dapper no tiene una función de paginación incorporada. Pero no es demasiado difícil implementarlo directamente en la consulta. Ejemplo:

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

Requiere SQL Server 2005+

2) Dapper devuelve un IEnumerable<T> .


Respuesta popular

No especificó una base de datos o una versión. Si tiene la suerte de poder usar el nuevo SQL Server 2012 y tener acceso a MSDN, puede usar las nuevas y brillantes palabras clave OFFSET y FETCH . La siguiente consulta omitirá 20 registros y devolverá los 5 siguientes.

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

Consulte http://msdn.microsoft.com/en-us/library/ms188385(v=sql.110).aspx#Offset para obtener más información.

Además, es bastante fácil copiar la forma en que Massive lo hace y escribir su propio método de extensión para IDbConnection. Aquí está el código 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);


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow