[英]NHibernate's equivalent of LINQ to SQL's and EF's Translate<T>()
[英]NHibernate HQL's Equivalent to T-SQL's TOP Keyword
什么是NHibernate HQL相當於T-SQL的TOP關鍵字?
還有什么是非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開始,你可以在查詢結束時在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
為了完整QueryOver
,這里是如何使用NHibernate 3.0中引入的QueryOver
API:
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
如果需要定義起始索引(例如,用於分頁.Skip(someInt)
則拋出.Skip(someInt)
。
mookid8000提供虛假信息。
沒有辦法用HQL設置SQL TOP N :(
它總是將所有表格下載到.NET並且采用TOP,這簡直是愚蠢的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.