Nhibernate QueryOver - 为分页获取子计数

Mik*_*keL 1 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>();
Run Code Online (Sandbox Code Playgroud)

这将返回我正在请求的类别,并根据传入的页面大小和页面索引正确分页子产品.

我现在想要做的实际上是获得产品的总行数,例如,即使我只返回5个产品,我需要知道总共有100个.

非常感谢

Mir*_*vic 5

你应该通过从Product侧面和雇用的另一个查询来做到这一点.RowCount().

这样的事情(如果你Product有Category房产):

int count = session.QueryOver<Product>()
    .Where(x => x.Category.Id == categoryId)
    .RowCount();
Run Code Online (Sandbox Code Playgroud)

在这里,您可以找到更多计算方法:如何使用NHibernate QueryOver API获取行数?

另一篇可能对您有所帮助的博客文章:
NHibernate 3.0 QueryOver - 在数据库级别进行搜索和分页