JoinQueryOver中的NHibernate QueryOver总和
|
尽管我正在阅读NHibernate Cookbook和所有可用的论坛帖子,但我仍然无法完成以下简单查询:
我有用户,每个人都有一个帐户。每个账户都有余额。
这些类如下所示:
public class User
{
public virtual int Id { get; set; }
public virtual Account Account { get; set; }
public virtual bool Active { get; set; }
}
public class Account
{
public virtual int Id { get; set; }
public virtual double Balance { get; set; }
}
现在,我想总结所有活跃用户的余额。而已...
在普通的SQL中,这很容易:
SELECT SUM(a.Balance)
FROM User u
INNER JOIN Account a
ON u.Account_id = a.Id
WHERE u.Active = \'true\'
我没有任何想法,如何使用NHibernate 3的新QueryOver-Api来解决这个问题。能否请您提供一个代码示例?
先感谢您!
丹尼尔·朗(Daniel Lang)
编辑
我知道,使用NHibernate Linq也是非常容易的,但是我想使用QueryOver来解决它。这是可用的Linq示例:
var result = Session.Query<User>()
.Where(x => x.Active)
.Sum(x => x.Account.Balance)
解
感谢AlexCuse,我可以找到最终的解决方案(他非常非常接近)-这是完整的代码:
User userAlias = null;
Account accountAlias = null;
session.QueryOver<User>(() => userAlias)
.JoinAlias(() => userAlias.Account, () => accountAlias)
.Where(() => userAlias.Active)
.Select(Projections.Sum<Account>(acct => accountAlias.Balance))
.SingleOrDefault<double>()
没有找到相关结果
已邀请:
2 个回复
杰黔轿缺
我不确定QueryOver API中的UniqueResult是什么,因此必须通过基础条件。
悸翠疮武昏
您不需要通用类型的别名。它可能是: