NHibernate / SQL Server多个外键到同一个表......可能吗?

时间:2010-08-24 15:06:16

标签: sql-server nhibernate nhibernate-mapping

我有一个SalesOrder表和一个单独的Address表。 SalesOrder有两个地址 - 因此避免使用列表,有交货和发票地址。这是它们在SalesOrder映射文件中的映射方式:

<many-to-one name="DeliveryAddress" class="Address" column="`DeliveryAddressGUID`" />
<many-to-one name="InvoiceAddress" class="Address" column="`InvoiceAddressGUID`" />

实际上是否可能有这种关系 - 同一个表中的两个单独的字段引用另一个。如果我删除其中一个“多对一”关联,我可以向表中添加Address,否则如果我保持两个关联,我会得到以下异常:

"The UPDATE statement conflicted with the FOREIGN KEY constraint \"FK67C9F3E2FBD32E03\". The conflict occurred in database \"Dispatch\", table \"dbo.Address\", column 'GUID'.\r\nThe statement has been terminated."

我做错了吗?

由于

修改 这些是两个表格的相关部分:

SalesOrder
------------
Guid
DeiveryAddressGuid
InvoiceAddressGuid
...

Address
------------
Guid
HouseNameOrNumber
AddressLine1
AddressLine2
...

这个错误真的很奇怪,因为它不会让我自己简单地将一个地址添加到Address表中,并且两个外键都处于活动状态(这是在NHibernate中,我无法直接用SQL Server测试它)

1 个答案:

答案 0 :(得分:1)

您是否检查过以确保父表中的这两个条目?