我怎么能在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
,但该功能会从查询中删除分组。
答案 0 :(得分:0)
获得session
后,您可以
var criteria = session.CreateCriteria(....)
int count = (int) criteria.UniqueResult();
答案 1 :(得分:0)
我找到了艾恩德的一篇旧帖子给了我一个解决方案(Counting paged data)。
我按照该帖子中的描述创建了自己的方言,并将rowcount
函数添加到我的分页查询中。并且,我在一次查询中将我的行数计入数据库。