NHibernate - 关系上的Composite-Id - 其中parent的ID不是同一个复合

时间:2008-12-17 17:23:22

标签: oracle nhibernate composite

假设我在Oracle数据库中有这些表

人:
PersonId< -PK ID(int,from sequence)
PersonFirstNameID< - int
PersonLastNameID< - int
PersonSecurityID< - int

PersonDetails
PersonFirstNameID -CompositeKey
PersonLastNameID -CompositeKey
PersonSecurityID -CompositeKey
PersonDetailKey
PersonDetailValue
PersonDetailRisk

现在我想建模NHibernate中从Person到PersonDetails的一对多关系。

我该怎么做?我已经尝试设置一个代表复合Id的组件,并通过属性ref将其提供给一对多但是这会生成具有重复列的SQL并抛出以下内容: System.ArgumentException:标识符类型不匹配;发现:预计:

NHibernate文档仅讨论当两者的复合Id相同时执行此操作。

是的......它不是我的数据库架构,它是一个传统数据库,访问非常有限。

1 个答案:

答案 0 :(得分:0)

不太清楚。

要使外键关系起作用,子进程必须引用父键的主键,因此数据结构表明person的主键是FirstNameId / lastNameid / securityid(因此最好的方法是忽略personid专栏)。

Person_Id实际上是主键(在数据库中定义为PK),还是数据库的PERSON主键版本实际上是FirstNameId / lastNameid / securityid?