Из NHibernate 3.2 вы можете использовать SKIP n / TAKE n в hql в конце запроса. Это может быть очень полезно в подзапросах, где вы не можете использовать SetMaxResults.
Например:
select l, (select u from User u where u.Location = l order by u.Date asc take 1)
from Location l
Ответ 4
Для полноты, вот как это сделать с API QueryOver, представленным в NHibernate 3.0:
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
Введите .Skip(someInt), если вам нужно определить начальный индекс, например. для подкачки.
Ответ 5
mookid8000 дает ложную информацию.
нет способа установить SQL TOP N с помощью HQL: (
он всегда загружает всю таблицу в .NET и занимает верхнюю часть, что просто глупо!