1

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

Person:
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: Identifier type mismatch; 发现:预期:

NHibernate 文档仅在复合 ID 相同时才讨论这样做。

是的......它不是我的数据库架构,它是一个遗留数据库并且访问非常有限。

4

1 回答 1

0

不太清楚。

为了使外键关系起作用,子项必须引用父项的主键,因此数据结构表明 person 的主键是 FirstNameId/lastNameid/securityid (因此您最好的做法是忽略 personid 列) .

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

于 2008-12-17T22:47:21.610 回答