从Nhibernate QueryOver返回ROW_NUMBER()

时间:2018-05-30 16:44:38

标签: nhibernate fluent-nhibernate queryover nhibernate-projections

我一直在疯狂地试图弄清楚如何从NHibernate QueryOver返回ROW_NUMBER()(不是行数)。现在这已成为学习练习的平等部分,所以我理解有一些简单的替代方法,例如返回整个集合并迭代它。但是,让我们坚持学习挑战。

NHibernate可以返回查询的ROW_NUMBER()吗?

用例:我想返回按创建日期排序的组内发票的等级。排名是它在列表中出现的顺序。理想情况下,我不想将整个列表返回到记录集中,只需获得单个项目的排名ROW_NUMBER()即可。希望这是有道理的。

我似乎无法弄清楚如何返回ROW_NUMBER()因为NHibernate要求将每个属性映射到Invoice类,即使我返回object[]

__ hibernate_sort_row 是NHibernate创建的ROW_NUMBER()别名。

var q = session.QueryOver<Invoice>()
        .OrderBy(x => x.Created).Asc
        .Where(x => x.Active == true)
        .Where(x => x.Group == grp)
        .SelectList(list => list
               .Select(Projections.Property("Id"))
               .Select(Projections.Property("Name"))
               .Select(Projections.GroupProperty("__hibernate_sort_row"))  // <- fails because there is no mapping...
        ).List<object[]>();

0 个答案:

没有答案