Nhibernate QueryOver - 为分页获取子计数

时间:2012-07-05 10:22:05

标签: c# nhibernate pagination queryover

我正在使用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个产品。

非常感谢

1 个答案:

答案 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