NHibernate的计数子查询行(nHibernate count rows in subquer

2019-10-16 13:53发布

我怎么可以做这样的事情在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

这 SO答案不适合我的工作,因为我有一个更复杂的分组。 我的问题源自于前面一个问题 ,我试图用ToRowCountQuery ,但该功能条分组形成查询。

Answer 1:

一旦你有一个session ,你可以

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

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


Answer 2:

我发现了一个旧后由Ayende这给了我一个解决方案( 计数分页数据 )。

我创建了自己的方言,如该职位描述,并添加了rowcount函数到我的分页查询。 和急,我得到了我的行数在一个单一的数据库查询。



文章来源: nHibernate count rows in subquery