【问题标题】:Select an expression with nhibernate queryover选择一个带有休眠查询的表达式
【发布时间】:2012-04-13 14:24:35
【问题描述】:

使用 nHibernate QueryOver 我想选择一系列包含聚合表达式的值。所以sql可能是:

SELECT SUM(Total / (TaxRate + 1)) Totals FROM Contract Group By CustomerId

我看不出在哪里(或是否)支持此功能。我可以将 where 子句编写为表达式,但不能将 select 中的列定义为表达式,这似乎很奇怪。

【问题讨论】:

  • HQL 是您的朋友!顺便说一句,您的接受率为零:)
  • 另一种方法是编写一个视图,其中包含计算和映射

标签: nhibernate queryover


【解决方案1】:

因为我没有你的代码,所以我无法验证这些,但你可以试试这个:

var dividePropertyProjection = Projections.SqlProjection(
                "SUM(Total/TaxRate+1) as Totals", new string[] {"Totals"}, new IType[] {NHibernateUtil.Decimal});  //Assuming the sum is decimal, you can change it



var list=   Session.QueryOver<Contract>().Select(Projections.Group<Contract>(x=>x.CustomerId),dividePropertyProjection).List(); 

不确定会返回什么列表,我猜它应该返回CustomerId, Sum 组合。

希望有帮助

【讨论】:

  • 太棒了!节省了我转换整个查询的时间。
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
相关资源
最近更新 更多