.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