Nhibernate n使用不同的键创建多对一/一对一
嘿,大家好,我正在对NHibernate进行调查,我有一个难题,我已经绞尽脑汁了一段时间,正在处理一个遗留数据库,其中包含一些相当复杂的关系 ClaimRoot具有claimGUID的主键。 ClaimRoot有一包由claimGUID关联的Claimdetails(这是一种享受) 问题在于,ClaimRoot还与ClaimFinancials存在可选的一对一关系(并非所有ClaimRoot都有ClaimFinancials,但大多数都有)。但ClaimFinancials的PK是一个FormID领域。此字段存在于ClaimRoot中,但不是PK 我在下面发布了一个地图,删除了额外的列以保护无辜者Nhibernate n使用不同的键创建多对一/一对一,nhibernate,nhibernate-mapping,many-to-one,Nhibernate,Nhibernate Mapping,Many To One,嘿,大家好,我正在对NHibernate进行调查,我有一个难题,我已经绞尽脑汁了一段时间,正在处理一个遗留数据库,其中包含一些相当复杂的关系 ClaimRoot具有claimGUID的主键。 ClaimRoot有一包由claimGUID关联的Claimdetails(这是一种享受) 问题在于,ClaimRoot还与ClaimFinancials存在可选的一对一关系(并非所有ClaimRoot都有ClaimFinancials,但大多数都有)。但ClaimFinancials的PK是一个FormI
<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假设FormID仅用于链接ClaimRoot和ClaimFinancials,听起来您希望从ClaimRoot到ClaimFinancials建立多对一关系。将ClaimRoot上的FormId属性替换为多对一
<class name="ClaimRoot" table="tbl_ClaimRoot" schema="DB1.dbo">
...
<many-to-one name="ClaimFinancials" column="FormID" />
...
</class>
...
...
即使“多”端只有“一”,也可以使用多对一关系。如果要生成架构,可以指定
unique=“true”
在数据库中生成约束。对于遗留数据库,这无关紧要。假设FormID仅用于链接ClaimRoot和ClaimFinancials,听起来您希望ClaimRoot和ClaimFinancials之间建立多对一关系。将ClaimRoot上的FormId属性替换为多对一
<class name="ClaimRoot" table="tbl_ClaimRoot" schema="DB1.dbo">
...
<many-to-one name="ClaimFinancials" column="FormID" />
...
</class>
...
...
即使“多”端只有“一”,也可以使用多对一关系。如果要生成架构,可以指定
unique=“true”
在数据库中生成约束。对于遗留数据库,这并不重要。仅供参考背景资料-我之所以将这些关系放在一起,是因为我们当前的POCO有一些方法,这些方法的存储过程可以在单个方法调用中更新ClaimFinancials和ClaimRoot,或ClaimFinancials和ClaimDetails,因为关系紧密,我不想拆开遗留应用程序。仅供参考背景资料-我之所以将这些关系放在一起,是因为我们当前的POCO有方法谁的存储过程更新ClaimFinancials和ClaimRoot,或ClaimFinancials和ClaimDetails在单个方法调用中,因为关系紧密,我不想拆开旧版的应用程序。