假设我在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相同时执行此操作。
是的......它不是我的数据库架构,它是一个传统数据库,访问非常有限。
答案 0 :(得分:0)
不太清楚。
要使外键关系起作用,子进程必须引用父键的主键,因此数据结构表明person的主键是FirstNameId / lastNameid / securityid(因此最好的方法是忽略personid专栏)。
Person_Id实际上是主键(在数据库中定义为PK),还是数据库的PERSON主键版本实际上是FirstNameId / lastNameid / securityid?