嘿所有,我踢NHibernate的輪胎,並有一個混亂,我一直在撓頭,現在有點工作與遺留數據庫與一些相當複雜關係。NHibernate許多對一/一對一用不同的鍵
ClaimRoot具有claimGUID的主鍵。 ClaimRoot有一個與claimGUID關聯的ClaimDetails包(這是一種享受)。
問題是,ClaimRoot也與ClaimFinancials有一個可選的一對一關係(並非所有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>
在此先感謝! -Bob
只是一個背景FYI - 我將這些關係拉到一起的原因是,我們目前的POCO有方法,Sprocs在單一方法調用中更新了ClaimFinancials和ClaimRoot或ClaimFinancials和ClaimDetails,因爲這些關係緊密, d更喜歡不撕開傳統應用程序。 – 2009-11-24 10:45:19