Row_Number() 使用 CreateCriteria 在 Nhibernate 中进行分区
本文关键字:Nhibernate 分区 CreateCriteria Number 使用 Row | 更新日期: 2023-09-27 17:56:14
我在 c# 中创建 nhibernate 查询时遇到了问题。实际上我必须为以下sql语句创建一个条件查询
select fCompanyID,ROW_NUMBER() over( PARTITION BY fCompanyID order by fPropertyID)
from tARCustomer
但似乎 nhibernate 不支持 Row_Number() 分区,因为直到现在我用谷歌搜索。我需要 nhibernate 中的此查询功能,但我不知道如何做到这一点。如果有人这样做,请让我知道/帮助我解决这个问题。
谢谢
好吧,NHibernate可以为任何事情提供解决方案。这可能是条件语法:
var list = session
.CreateCriteria<Customer>()
.SetProjection
(
Projections.SqlProjection
(
"fCompanyID, ROW_NUMBER() over( PARTITION BY fCompanyID order by fPropertyID) as RowNumber"
, new string[] {"fCompanyID", "RowNumber"}
, new IType[] { NHibernate.NHibernateUtil.Int32, NHibernate.NHibernateUtil.Int32}
)
)
.SetResultTransformer(Transformers.AliasToBean<ResultDTO>())
.List<ResultDTO>()
;
ResultDTO
是这样的:
public class ResultDTO
{
public virtual int RowNumber { get; set; }
public virtual int fCompanyID{ get; set; }
}
现在,您可以将list
作为一组ResultDTO