2011-01-04 10 views
4

NH3でLinqクエリでグループを実行しようとしています。 SQLの難しさを知っていることはわかっていますが、それは不可能ですが、理想的には、エンティティによってグループを行い、それを完全に取得したいと考えています。 のような何か:それは唯一のIDで全体仕事エンティティが、グループを取得しようとしてNhibernateのLinqでグループ化エンティティまたは複合キーを取得できません

var list = from proposals in Session.Query<Proposal>() 
      group proposals by proposals.Job 
      into jobGrouping 
      select new { 
       Job = jobGrouping.Key, 
       TotalProposals = jobGrouping.Count() 
      }; 

これは違法なSQLクエリを生成します。

私は複合フィールドでグループ化しようとしている:

var list = from proposals in Session.Query<Proposal>() 
        group proposals by new { proposals.Job.Name, proposals.Job.Status} 
        into jobGrouping 
        select new { 
         Job = jobGrouping.Key.Name, 
         Status = jobGrouping.Key.Status, 
         TotalProposals = jobGrouping.Count() 
        }; 

しかし、私はこれを試してみたときに、私はNHibernateのをtryesは、式ツリー構築するための例外を取得:同じキーを持つ

項目を既に追加されています。

誰でもNHibernateでそれを達成する方法があるかどうか知っていますか?

おかげで、 宜蘭

+0

1をその可能性を避けることができるとした場合

が、私は同じ問題を持っている –

+1

https://nhibernate.jira.com/browse/NH-3027は、あなたの(最初の)問題に関連しています。それはNH 3.2の時点で未解決のままです –

答えて

0

私は.Join拡張メソッドに式ツリーエイリアスはラムダパラメータ名から直接撮影された複数回使用しようとして同様の問題がありました。

私のSQLのようなlinq構文についての知識は限られていますが、何とかラムダエイリアス名が自動的に割り当てられている流暢に相当するものに変換されると思います。場合厥、明示的なユニークなlabmdaの別名を持つ流暢構文にこれを翻訳すると、あなたが問題

関連する問題