NHibernate的条件投影

本文关键字:投影 条件 NHibernate | 更新日期: 2023-09-27 17:53:21

我无法获得以下查询工作。分组和总和工作没有问题,但是当我尝试执行条件和时,我在编译器上收到以下错误:

Error   CS1503  Argument 1: cannot convert from 'NHibernate.Criterion.IProjection' to 'System.Linq.Expressions.Expression<System.Func<ManagementWebBase.Models.FinancialTransaction.FinancialTransactionTO, object>>'

函数代码为:

var summary = session.QueryOver<FinancialTransactionTO>().Select(
            Projections.Group<FinancialTransactionTO>(t=>t.Company.Id),
            Projections.Sum<FinancialTransactionTO>(t=>t.Total),
            Projections.Sum<FinancialTransactionTO>(
            Projections.Conditional(
            Restrictions.Where<FinancialTransactionTO>(f => f.Type.Id == 1),
            Projections.Constant(1),
            Projections.Constant(0)))).List<object>();
        return summary;

我看到的所有例子都没有什么不同。我做错了什么?

NHibernate的条件投影

使用投影求解。条件部分不加Type的Sum:下面是我使用的工作示例:

var summary = session.QueryOver<FinancialTransactionTO>().Select(
            Projections.Group<FinancialTransactionTO>(t => t.Company.Id),
            Projections.Sum<FinancialTransactionTO>(t => t.Total),
            Projections.Sum(
            Projections.Conditional(
            Restrictions.Where<FinancialTransactionTO>(f => f.Type.Id == 1),
            Projections.Property<FinancialTransactionTO>(f=>f.Total),
            Projections.Constant(0.0M, NHibernateUtil.Decimal)))).List<object>();
        return summary;