【问题标题】:NHIbernate Conditional projection queriesNHIbernate 条件投影查询
【发布时间】:2012-06-29 14:55:33
【问题描述】:

我有要求,其中我必须使用条件投影查询分别计算现金和信用卡的总数。我下面的代码不起作用,它给了我数据类型不匹配错误。它说真条件返回十进制,假返回货币。我不确定它为什么会这样,因为 0.0M 确实代表十进制。有人可以帮我解答一下吗?

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"));

【问题讨论】:

    标签: c# nhibernate nhibernate-criteria nhibernate-projections


    【解决方案1】:

    您可以明确指定要使用的类型。例如:

    Projections.Constant(0.0M, NHibernateUtil.Decimal)
    

    在此处查看NHibernateUtil 类的文档:http://elliottjorgensen.com/nhibernate-api-ref/NHibernate/NHibernateUtil.html

    【讨论】:

    • 在我的情况下,我需要转换字符串.... Projections.Conditional ( Restrictions.IsNotNull(Projections.Property(() => model.Name)), Projections.Cast(NHibernateUtil.String, Projections.Property(() => model.Name)), Projections.Constant(string.Empty, NHibernateUtil.String)),
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多