Al utilizar SetFirstResult(start)
y SetMaxResults(count)
métodos para implementar la paginación Me he dado cuenta de que la consulta generada sólo lo hace un select top count * from some_table
y no se necesita el parámetro start
en cuenta o al menos no en el nivel de base de datos. Parece que si instruyo NHibernate para ejecutar la siguiente consulta:paginación NHibernate con SQL Server
var users = session.CreateCriteria<User>()
.SetFirstResult(100)
.SetMaxResults(5)
.List<User>();
105 registros transitará entre el servidor de base de datos y la aplicación que se encargará de despojar los primeros 100 registros. Con tablas que contienen muchas filas, esto podría ser un problema.
He verificado que, con una base de datos SQLite NHibernate se aprovecha de las OFFSET
y LIMIT
palabras clave para filtrar los resultados a nivel de base de datos. Soy consciente de que no hay equivalente de la palabra clave OFFSET
y Oracle de ROWNUM
en SQL Server 2000 pero ¿hay alguna solución? ¿Qué hay de SQL Server 2005/2008?
Gran respuesta @Justicia. Gracias por tu tiempo. –