Nhibernate 基于聚合函数和的CreateCriteria排序

Nhibernate 基于聚合函数和的CreateCriteria排序,nhibernate,fluent-nhibernate,createcriteria,Nhibernate,Fluent Nhibernate,Createcriteria,我应该如何编写CreateCriteria来生成如上示例所示的SQL?这应该可以做到。由于您没有发布orderitem实体的映射,我使用字段名作为属性名。您需要将OrderItemEntity更改为您自己的映射类,并且需要更改前面带有oi的名称。通过类中属性的名称(请注意:这些字符串区分大小写!) var yourResult=Session.CreateCriteria(“oi”) .SetProjection(Projections.ProjectionList()项目) .Add(Proj

我应该如何编写CreateCriteria来生成如上示例所示的SQL?

这应该可以做到。由于您没有发布orderitem实体的映射,我使用字段名作为属性名。您需要将OrderItemEntity更改为您自己的映射类,并且需要更改前面带有oi的名称。通过类中属性的名称(请注意:这些字符串区分大小写!)

var yourResult=Session.CreateCriteria(“oi”)
.SetProjection(Projections.ProjectionList()项目)
.Add(Projections.Alias(Projections.GroupProperty(“oi.ProductErpIdentifier”),“ProductErpIdentifier”))
.Add(Projections.Alias(Projections.GroupProperty(“oi.PriceValue”),“PriceValue”))
.Add(Projections.Alias(Projections.GroupProperty(“oi.ManufacturerProductIdentifier”),“ManufacturerProductIdentifier”))
.Add(Projections.Alias(Projections.Sum(“oi.QuantityOrdered”),“QuantityOrdered”))
.AddOrder(Order.Desc(“QuantityOrdered”))
.List();

如果您想运行代码,我需要知道您的属性名称。请发布orderitem实体的映射。我正在使用.Add(Projections.Alias(Projections.Sum(“QuantityOrdered”),“QuantityOrdered”)感谢您现在的回答,我在“OrderItem”类中找不到属性“SummedQuantityOrdered”的setter,我需要使用此命令添加som临时列OrderItemiam@stefan如果删除AddOrder是否有效?如果没有,请发布实体(OrderItem)的代码它是映射文件。是的,如果删除addorder,它会工作,如果我对其他文件进行排序,它也会工作columns@stefan我更新了上面的代码,这应该也适用于addorder。
SELECT 
  [ProductErpIdentifier], 
  [PriceValue], 
  [ManufacturerProductIdentifier], 
  SUM([QuantityOrdered]) as  [QuantityOrdered]
FROM 
  [eCommerceDev].[dbo].[OrderItem] 
GROUP BY 
  [ProductErpIdentifier],[PriceValue],[ManufacturerProductIdentifier]
ORDER BY  
  [QuantityOrdered] desc
var yourResult = Session.CreateCriteria<OrderItemEntity>("oi")
                   .SetProjection(Projections.ProjectionList()
                      .Add(Projections.Alias(Projections.GroupProperty("oi.ProductErpIdentifier"), "ProductErpIdentifier"))
                      .Add(Projections.Alias(Projections.GroupProperty("oi.PriceValue"), "PriceValue"))
                      .Add(Projections.Alias(Projections.GroupProperty("oi.ManufacturerProductIdentifier"), "ManufacturerProductIdentifier"))
                      .Add(Projections.Alias(Projections.Sum("oi.QuantityOrdered"), "QuantityOrdered")))
                   .AddOrder(Order.Desc("QuantityOrdered"))
                   .List();