我正在使用Nhibernate 3.0并需要在网站上实现分页。基本上我们有一个ProductCategory,它有一个与之关联的产品集合。到目前为止,我有这个工作
var result = Session.QueryOver<TEntity>().TransformUsing(Transformers.DistinctRootEntity)
.Where(category => category.CategoryId == criteria.CategoryId)
.Fetch(category => category.Products).Eager
.Take(pageSize)
.Skip((pageIndex - 1)*pageSize)
.Future<TEntity>();
这会返回我要求的类别,并根据传入的页面大小和页面索引正确分页子产品。
我现在要做的实际上是获取产品的总行数,例如,即使我只返回5个产品,我也需要知道总共有100个产品。
非常感谢
答案 0 :(得分:5)
您应该通过Product
方面并使用.RowCount()
来执行其他查询。
这样的事情(如果您的Product
具有Category
属性):
int count = session.QueryOver<Product>()
.Where(x => x.Category.Id == categoryId)
.RowCount();
在这里,您可以找到其他几种获取计数的方法:How do I get row count using the NHibernate QueryOver api?
另一篇可能对您有所帮助的博文:
NHibernate 3.0 QueryOver - Searching, and Paging at database level