2013-06-13 102 views
0
SELECT 
    [ProductErpIdentifier], 
    [PriceValue], 
    [ManufacturerProductIdentifier], 
    SUM([QuantityOrdered]) as [QuantityOrdered] 
FROM 
    [eCommerceDev].[dbo].[OrderItem] 
GROUP BY 
    [ProductErpIdentifier],[PriceValue],[ManufacturerProductIdentifier] 
ORDER BY 
    [QuantityOrdered] desc 

我應該如何編寫一個CreateCriteria來像上面的例子那樣生成SQL?CreateCriteria對聚合函數總和排序

+0

如果您想運行代碼,我需要知道您的屬性名稱。請發佈您的orderitem實體的映射。 – TedOnTheNet

+0

我正在使用.Add(Projections.Alias(Projections.Sum(「QuantityOrdered」),「QuantityOrdered」) – stefan

回答

0

這應該可以做到。由於您沒有發佈您的訂單實體的映射,我使用了域名作爲屬性名稱。您需要將OrderItemEntity更改爲您自己的映射類,並且您需要更改以oi開頭的名稱。 (請注意:這些字符串區分大小寫!)

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(); 
+0

感謝回答現在我得到無法找到一個setter屬性'SummedQuantityOrdered'類'OrderItem',我需要添加索姆臨時列OrderItem – stefan

+0

iam使用這也http://nkpatterson.blogspot.se/2010/12/re-usable-nhibernate-paging-extension.html – stefan

+0

@stefan如果你刪除AddOrder它會工作嗎?如果沒有,請發佈實體代碼(orderitem)和它的映射文件 – TedOnTheNet