1

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

非常感谢

4

1 回答 1

5

您应该通过从Product侧面使用另一个查询来执行此操作.RowCount()

像这样的东西(如果你Product有财产Category):

int count = session.QueryOver<Product>()
    .Where(x => x.Category.Id == categoryId)
    .RowCount();

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

另一篇可能对您有帮助的博文:
NHibernate 3.0 QueryOver - Searching, and Paging at database level

于 2012-07-05T12:51:04.530 回答