Nhibernate Linq Sum与计算导致NotSupportedException

时间:2014-04-07 09:53:36

标签: c# linq nhibernate

我正在将Nhibernate 3.3.3.4001与SybaseSQLAnywhere12Dialect一起使用,并尝试在sum linq函数中使用简单计算。

我想使用Linq而不是HQL来实现这一点,并且很乐意使用默认的linq将Nhibernate扩展到hql生成器。

使用以下Linq查询引发异常

  

System.NotSupportedException:表达式类型' NhSumExpression'此SelectClauseVisitor不支持

Linq查询

var query = (from c in session.Query<Entity>()
            select c.FieldValue / 100M).Sum()

预期的SQL语句

SELECT SUM(FieldValue / 100.0) FROM TableName

如果在没有Sum()函数的情况下运行相同的查询,它会正确执行计算,因此很难理解为什么Sum()不起作用。

2 个答案:

答案 0 :(得分:1)

您可能会尝试重写一下LINQ查询,就像这样:

var result = ((from c in session.Query<Entity>()
               select c.FieldValue).Sum()) / 100;

也可以通过将除法运算符移出总和来优化结果查询:

SELECT SUM(FieldValue) / 100 FROM TableName

答案 1 :(得分:1)

在Linq组函数(Max,Min,Sum)函数中使用常量时存在一个未解决的问题。如果使用其他字段,它将正常工作。

在NHibernate 3.3.3中发现错误 https://nhibernate.jira.com/browse/NH-3376