Nhibernate GroupBy Count

时间:2014-01-08 11:52:02

标签: nhibernate

似乎无法找到解决方案。我有一个QueryOver,其中包含一个分组。我想分页结果,但是,我似乎无法找到一种方法来获得总行数。

var companies = session.QueryOver<Company>
                       .SelectList(list =>
                                   list
                                   .SelectGroup(x=> x.Domain).WithAlias(() => item.Text)
                                   .SelectCount(x=> x.Domain).WithAlias(() => item.Total));

companies.TransformUsing(Transformers.AliasToBean<ItemCount>());

var totalRows = companies.ToRowCountQuery();

问题在于&#34; ToRowCountQuery()&#34;删除分组。如果我做了

var list = companies.List<ItemCount>();

这会产生以下SQL

SELECT TOP (20 /* @p1 */) this_.Domain        as y0_,
             count(this_.Domain) as y1_
FROM   [Company] this_
GROUP  BY this_.Domain
ORDER  BY y1_ desc;

我之后的内容

select COUNT(*)
from (SELECT this_.Domain        as y0_,
             count(this_.Domain) as y1_
    FROM   [Company] this_
    GROUP  BY this_.Domain) g

我在互联网上搜索过,甚至无法找到满足我需要的东西。

1 个答案:

答案 0 :(得分:0)

我在SO上已经回答了几次,但是无论如何,nhibernate不支持from子句中的嵌套选择。

嵌套选择仅在某些条件下的from和where中受支持,至少QueryOver没有linq提供者所具有的那么多限制。