0

NHibernateQueryOverで次のクエリを実装しようとしています。

SQL

SELECT
     SUM(GrossChargeAmount)
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey

SELECT
     SUM(GrossChargeAmount),
     Account.AccountHolder
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey
GROUP BY
     Account.AccountHolder

NHibernate:

var accountAlias = null;

var baseQuery = session.QueryOver<Charges>()
                .JoinAlias(c => c.Account, () => accountAlias)
                .SelectList(s => s.SelectSum(c => c.GrossChargeAmount))

baseQueryを構築するコードがあります。次に、メソッドパラメータに応じて、次のようにGROUPBYをbaseQueryに追加します。

baseQuery.SelectList(s => s.GroupBy(() => accountAlias.AccountHolder)

ただし、これにより、baseQueryのプロジェクションがリセットされ、基本的に最初のプロジェクションが「上書き」されます(.SelectList(s => s.SelectSum(c => c.GrossChargeAmount)))。この段階では、クエリの実行には、GROUP BYだけのSUM()はありません。

TLDR; Nhibernate QueryOverインスタンスにプロジェクションを追加するにはどうすればよいですか?

最後になりましたが、私はNHibernate2.0.50727で実行しています。

4

1 に答える 1

0

試す:

baseQuery.SelectList(s => 
    s.SelectSum(c => c.GrossChargeAmount)
    .GroupBy(() => accountAlias.AccountHolder))

必要に応じて、SelectList に渡される式を作成することもできます

于 2012-09-11T15:33:15.103 に答える