2017-06-21 17 views
1

HasManyとHasManyToManyにそのようなメソッドが存在しますが、何らかの理由でReferencesにそのようなメカニズムがありません。流暢なnhibernateマッピングで参照にwhere節を作る方法

私たちは、新しいバージョンとして更新して保存できる他のオブジェクトを参照するオブジェクトを持っていますが、私たちの子オブジェクトからは、関連オブジェクトの最新バージョンを読み込みたいだけです。マッピングは関連オブジェクトの主キーを使用できません。これは、オブジェクトの各バージョンで変更されるため、関連するオブジェクトをバージョン間で変更されないプロパティにマップし、where句のみを選択するようにしたいからです一致する要素は最高のバージョンです。

だから、私たちのマッピングは、我々はそれぞれの節約のために財産IsLatest(ブールプロパティ)を更新してしまう。もちろん、この

References(p => p.RelatedObjectIdentifier).PropertyRef("MatchingPropIdentifier").Where(p => p.IsLatest).Not.Nullable; 

ような何かをしたいと思い、次の

References(p => p.RelatedObjectIdentifier).PropertyRef("MatchingPropIdentifier").Not.Nullable; 

のようなものです関連するオブジェクト。

Where(p => p.IsLatest)はクラスマップ/サブクラスマップのReferencesに存在しないので、これを他の方法で行うことができますか?

答えて

0

あなただけWhere()制限、使用することができます。

が、このタイプのオブジェクトを取得するとき句が使用「」SQLを定義します。

参照される型のクラスマップにあります。

例:悪いへ

public class RelatedObjectMap : ClassMap<RelatedObject> 
{ 
    public RelatedObjectMap() 
    { 
     Table("RelatedObjectTable"); 

     //Id() etc. 

     Where("MatchingPropIdentifier IS NOT NULL)"); 

    } 
} 
+0

うーん実装が唯一のクラスマップではなくsubclassmapに適用されること。それと同時に、これは私にとってはうまくいかないでしょう。私はしばしばwhere節が他のオブジェクトを選択しなければならない場合があります。 –

+0

'SubclassMap 'は 'Where()'関数を持っていません。 – kayess

関連する問題