それはちなみにも可能で、少しハッキングします。
我々は、我々が見つかった場合、単一の関連要素を取得するために使用します偽の収集とそのドメインを定義するつもりだ:
public class Foo
{
public virtual BarKey BarKey { get; set; }
public virtual Bar Bar { get { return Bars.SingleOrDefault(); } }
protected virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public virtual BarKey Id { get; set; }
}
//this class must override Equals and GetHashcode. Implementation not shown.
public class BarKey
{
public virtual int X { get; set; }
public virtual int Y { get; set; }
}
BarKey
コンポーネントはの一部であるプロパティが含まれていますキー。今
、マッピング:NHが伝え
<class name="Foo">
<id ...><generator .../></id>
<component name="BarKey">
<property name="X" />
<property name="Y" />
</component>
<bag name="Bars" inverse="true">
<key property-ref="BarKey">
<column name="X"/>
<column name="Y"/>
</key>
<one-to-many class="Bar"/>
</bag>
</class>
<class name="Bar">
<composite-id name="Id">
<key-property name="X" />
<key-property name="Y" />
</composite-id>
</class>
property-ref
属性がfooの代わりに、そのIdのBarKey
プロパティに対してバーでそれらの列にマッチします。