2012-06-29 109 views
0

我有要求,其中我必須分別使用條件投影查詢來計算現金和信用卡的總計。我下面的代碼不起作用,它給了我數據類型不匹配的錯誤。它說真實的情況返回小數點和假貨幣返回。我不確定爲什麼它會這樣做,因爲0.0M確實代表了十進制。任何人都可以幫我解決這個問題嗎?NHIbernate有條件的投影查詢

RefundTemplate.Criteria.SetProjection(
         Projections.ProjectionList() 

         .Add(Projections.Sum(Projections.Conditional 
          (Restrictions.Eq("PaymentType", "CK"), 
            Projections.Property("Gross"), Projections.Constant(0.0M))), "CashRefund") 
         .Add(Projections.Sum(Projections.Conditional 
          (Restrictions.Eq("PaymentType", "CC"), 
            Projections.Property("Gross"), Projections.Constant(0.0M))), "CreditRefund")); 

回答

3

您可以明確指定要使用的類型。例如:

Projections.Constant(0.0M, NHibernateUtil.Decimal) 

請參閱NHibernateUtil類此的文檔:http://elliottjorgensen.com/nhibernate-api-ref/NHibernate/NHibernateUtil.html

+0

在我來說,我需要投串.... Projections.Conditional ( Restrictions.IsNotNull(Projections.Property (()=> model.Name)), Projections.Cast(NHibernateUtil.String,Projections.Property((=)model.Name)), Projections.Constant(string.Empty,NHibernateUtil.String) ), –