2009-07-10 15 views
2

すでに1つ以上の投影が設定されているかもしれないnhibernateクエリに投影を追加する最良の方法はありますか? .SetProjection()を呼び出すと、既に存在する可能性のある投影を置き換えるように見えます。nhibernateクエリへの投影の追加

少し背景の文脈を与えるために、ページングされた結果拡張メソッドのバージョンをhereと使用していますが、私は別個の投影法を使ってクエリを渡していますが、その投影法はカウント.SetProjection(Projections.RowCountInt64)を呼び出すための基準。

答えて

2

私はそれが今すぐ確認できないので、うまくいけないのか分かりませんが、このトリックを行うにはProjectionListのようなものを使ってみませんか?


var criteria = ... 
var projectionList = Projection.ProjectionList(); 

// Add you projections to the projectionList 
projectionList.Add(yourQueryProjection); 
projectionList.Add(Projections.RowCountInt64()); 

criteria.setProjection(projectionList); 

+0

投影を使用することを選択すると、クエリを返すすべての列を指定する必要があります。 NHの私の経験は限られていますが、ICriteria APIに、選択しているエンティティに関連するすべての列を選択し、さらにもう1つの予測をクエリに追加するように指示する方法はありません。しかし、これはプロジェクト(またはICriteria API)に追加するのが非常に難しい拡張メソッドであるようには思えません。 – MoMo

0

私はあなたがそれを少し手直しする必要があり、これを行っていないが、私はそれが任意の突起が何ProjectionCriteriaをチェックしたい場合があります設定されていない場合がありますので、あなたが

.ProjectionCriteria.Add(Projections.RowCountInt64) 

ような何かを行うことができると信じてプロパティはその場合です。 nullの可能性があります。

+0

私はICriteriaを使用していますので、実際には.ProjectionCriteriaは利用できません。私は実際の基準の実装を渡すことができたと思うが、ICreiteria実装ごとに拡張メソッドが必要になるだろう。他のアイデア? – mockobject

関連する問題