我有一个NHibernate的查询,看起来像这样:如何实现分页NHibernate的与左连接查询
var query = Session.CreateQuery(@"
select o
from Order o
left join o.Products p
where
(o.CompanyId = :companyId) AND
(p.Status = :processing)
order by o.UpdatedOn desc")
.SetParameter("companyId", companyId)
.SetParameter("processing", Status.Processing)
.SetResultTransformer(Transformers.DistinctRootEntity);
var data = query.List<Order>();
我想实现分页此查询,所以我只返回X行,而不是整个的结果集。
我知道SetMaxResults()
和SetFirstResult()
,但由于left join
和DistinctRootEntity
,这可能会返回少于x订单。
我试图"select distinct o"
为好,但这是生成(使用SQLSERVER 2008方言)的SQL似乎忽略distinct
的第一个页面后(我认为this是问题)。
完成此操作的最佳方法是什么?
'存在'的想法很有趣......我会试试看。 – 2010-03-26 23:02:00