我有一个映射到nHibernate的发票表。
我需要根据匿名对象中的某些条件找出发票的各种计算值。
现在我正在使用不同的查询。
var TotalAmount = session.QueryOver<Invoice>().Where(pred).Future()
.Select(x => (x.InvoiceAmount.HasValue ? x.InvoiceAmount.Value : 0)).Sum();
var financedAmount = session.QueryOver<Invoice>().Where(pred).Where(y => y.IsFinanced).Future()
.Select(x => (x.InvoiceAmount.HasValue ? x.InvoiceAmount.Value : 0)).Sum();
在分析器中,这是向数据库发送多个查询,并且还提取整个表。我需要的东西类似于:
select (select sum(InvoiceAmount) from Invoice where IsFinanced = 1) as FinancedAmount,
(select sum(InvoiceAmount) from Invoice where IsFinanced = 0) as NonFinancedAmount;
这样所有的值都可以在一个查询中返回。我如何编写nHibernate-Linq等价物呢?