ねえ、私はNHibernateでタイヤを蹴っていて、かなり複雑な関係を持つレガシーデータベースを操作して、少し頭を悩ませてきた難問を抱えています。
ClaimRootには、claimGUIDの主キーがあります。ClaimRootには、claimGUIDによって関連付けられたClaimdetailsのバッグがあります(これは扱います)。
問題は、ClaimRootがClaimFinancialsとオプションの1対1の関係を持っていることです(すべてのClaimRootsがClaimFinancialsを持っているわけではありませんが、ほとんどが持っています)。ただし、ClaimFinancialsのPKはFormIDフィールドです。このフィールドはClaimRootに存在しますが、PKではありません。
罪のない人を保護するために余分な列を削除して、以下のマッピングを投稿しました。
<class name="ClaimRoot" table="tbl_ClaimRoot" schema="DB1.dbo">
<id name="ClaimGUID">
<generator class="guid"/>
</id>
<property name="FormID" />
<property name="LastFormNoteText" />
<bag name="ClaimDetails" inverse="true">
<key column="ClaimGUID"/>
<one-to-many class="ClaimDetails"/>
</bag>
</class>
<class name="ClaimDetails" table="tbl_ClaimDetails" schema="DB2.dbo">
<id name="RowID">
<generator class="native"/>
</id>
<property name="ClaimGUID" />
<property name="SeqNo"/>
<property name="B1A_InsID" />
<many-to-one name="Root" column="ClaimGUID" foreign-key="ClaimGUID"/>
</class>
<class name="ClaimFinancials" table="tbl_ClaimFinancials" schema="DB1.dbo">
<id name="FormID">
<generator class="native"/>
</id>
<property name="CreatedDate"/>
<property name="SubmittedDate" />
</class>
前もって感謝します!-ボブ