Jon*_*noW 3 nhibernate criteria
有谁知道如何使用NHibernate标准表达以下SQL语句?
SELECT SUM(Val1 + Val2) FROM SomeTable
Run Code Online (Sandbox Code Playgroud)
看起来很简单,但是AFAIK我似乎无法找到一种方法来做到这一点而不返回一个值数组,Val1 + Val2的总和分别然后从数组求和,我想避免.
在博客文章的评论中,@ Jaguar在他的回答中提到NHibernate和缺少的OperatorProjection是另一种解决方案:
session.CreateCriteria().SetProjection(
Projections.Property<SomeType>(val => val.Id),
Projections.Property<SomeType>(val => val.Duration),
Projections.SqlFunction(
new VarArgsSQLFunction("(", "+", ")"),
NHibernateUtil.Double,
Projections.Property<SomeType>(val => val.Duration),
Projections.Constant(1)
)
).List();
Run Code Online (Sandbox Code Playgroud)
所有功劳都归功于Tomek.
这可能看起来像:
Projections.Sum(
Projections.SqlFunction(
new VarArgsSQLFunction("(", "+", ")"),
NHibernateUtil.Int32,
Projections.Property<SomeTableType>(val => val.Val1),
Projections.Property<SomeTableType>(val => val.Val2)
)
)
Run Code Online (Sandbox Code Playgroud)
特别VarArgsSQLFunction有用.
好吧,在第n次阅读这个确切问题的问题后,我决定编写一个不包括编写SQL的实现.
您可以在http://savale.blogspot.com/2011/04/nhibernate-and-missing.html上查看您可以编写的实现:
criteria.SetProjection(
new ArithmeticOperatorProjection("+",
NHibernateUtil.Int32,
Projections.Property("Prop1"), Projections.Property("Prop2")
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2963 次 |
| 最近记录: |