Что такое NHibernate HQL, эквивалентный ключевому слову TOP-T-SQL?
Также, как не-HQL способ дать мне первые 15 классов?
В HQL это довольно просто:
var top15 = session.CreateQuery("from SomeEntity") .SetFirstResult(0) .SetMaxResults(15) .List<SomeEntity>();
Не знаю, как это сделать, используя API критериев.
Критерии API Метод:
ICriteria criteria = DaoSession.CreateCriteria(typeof(T)); criteria.SetFirstResult(StartIndex); criteria.SetMaxResults(MaximumObjects); return criteria.List<T>();
В NHibernate 3.2 вы можете использовать SKIP n / TAKE n в hql в конце запроса. Это может быть очень полезно в подзапросах, где вы не можете использовать SetMaxResults.
SKIP n / TAKE n
SetMaxResults
Например:
select l, (select u from User u where u.Location = l order by u.Date asc take 1) from Location l
mookid8000 дает ложную информацию.
нет способа установить SQL TOP N с HQL: (
он всегда загружает все таблицы в .NET и берет ТОП, который просто глуп!
Для полноты вот как это сделать с помощью API QueryOver, представленного в NHibernate 3.0:
QueryOver
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
Добавьте .Skip(someInt), если вам нужно определить начальный индекс, например, для подкачки.
.Skip(someInt)