visual tutorial studio query example .net nhibernate orm hql

.net - tutorial - NHibernate HQL Equivalente a la palabra clave TOP de T-SQL



nhibernate tutorial (5)

En realidad, es bastante fácil en HQL:

var top15 = session.CreateQuery("from SomeEntity") .SetFirstResult(0) .SetMaxResults(15) .List<SomeEntity>();

Sin embargo, no sé cómo hacer esto usando la API de criterios.

¿Qué es NHibernate HQL Equivalente a la palabra clave TOP de T-SQL?

Además, ¿cuál es la manera de decir "no HQL" que me da los primeros 15 de una clase?


Método de Criteria API:

ICriteria criteria = DaoSession.CreateCriteria(typeof(T)); criteria.SetFirstResult(StartIndex); criteria.SetMaxResults(MaximumObjects); return criteria.List<T>();


Para completar, aquí está cómo hacerlo con la API QueryOver presentada en NHibernate 3.0:

var top15 = session.QueryOver<SomeEntity>().Take(15).List();

.Skip(someInt) un .Skip(someInt) si necesita definir un índice de inicio, por ejemplo, para paginación.


mookid8000 está dando información falsa.

no hay forma de configurar SQL TOP N con HQL :(

siempre descarga toda la tabla a .NET y toma el TOP, ¡lo cual es simplemente estúpido!


Desde NHibernate 3.2, puede usar SKIP n / TAKE n en hql al final de la consulta. Podría ser muy útil en subconsultas en las que no se puede usar SetMaxResults .

Por ejemplo:

select l, (select u from User u where u.Location = l order by u.Date asc take 1) from Location l