NHibernate HQL相当于T-SQL的TOP关键字

时间:2009-02-16 23:37:34

标签: .net nhibernate orm hql

什么是NHibernate HQL相当于T-SQL的TOP关键字?

还有什么非HQL方式可以说给我前15节课?

5 个答案:

答案 0 :(得分:33)

在HQL中实际上非常简单:

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

不知道如何使用条件API执行此操作。

答案 1 :(得分:10)

标准API方法:

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

答案 2 :(得分:4)

从NHibernate 3.2开始,您可以在查询结尾的hql中使用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

答案 3 :(得分:0)

为了完整性,以下是使用NHibernate 3.0中引入的QueryOver API的方法:

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

如果您需要定义起始索引,请投入.Skip(someInt),例如用于传呼。

答案 4 :(得分:-2)

mookid8000提供虚假信息。

无法使用HQL设置SQL TOP N :(

它总是将所有表格下载到.NET并且取得TOP,这只是简单的愚蠢!