什么是NHibernate HQL相当于T-SQL的TOP关键字?
还有什么非HQL方式可以说给我前15节课?
答案 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,这只是简单的愚蠢!