nHibernate计算子查询中的行数

时间:2011-11-08 08:17:05

标签: nhibernate count subquery

我怎么能在nHibernate中做这样的事情:

select count(*)
from (subquery)

在SQL中这是一个相当简单的查询,但在nHibernate中解决方案并不那么明显。一个明显的解决方案将是:

    var rowcount = Session.QueryOver<Entity>()
       .Select(Projections.Alias(Projections.Count(Projections.SubQuery(detachedQuery)), "count"))
        .FutureValue<int>();

但是,这会产生ArgumentOutOfRangeException

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

This所以答案对我不起作用,因为我有一个更复杂的分组。 我的问题来自an earlier question,我尝试使用ToRowCountQuery,但该功能会从查询中删除分组。

2 个答案:

答案 0 :(得分:0)

获得session后,您可以

var criteria = session.CreateCriteria(....)

int count = (int) criteria.UniqueResult();

答案 1 :(得分:0)

我找到了艾恩德的一篇旧帖子给了我一个解决方案(Counting paged data)。

我按照该帖子中的描述创建了自己的方言,并将rowcount函数添加到我的分页查询中。并且,我在一次查询中将我的行数计入数据库。