【发布时间】:2010-08-24 15:06:16
【问题描述】:
我有一个 SalesOrder 表和一个单独的 Address 表。 SalesOrder 有两个地址 - 因此避免使用列表,有 Delivery 和 Invoice 地址。这是它们在 SalesOrder 映射文件中的映射方式:
<many-to-one name="DeliveryAddress" class="Address" column="`DeliveryAddressGUID`" />
<many-to-one name="InvoiceAddress" class="Address" column="`InvoiceAddressGUID`" />
实际上是否有可能建立这种关系 - 同一个表中的两个单独的字段引用另一个。如果我删除“多对一”关联之一,我可以将地址添加到表中,否则如果我保留两个关联,我会得到以下异常:
"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
...
这个错误真的很奇怪,因为它不允许我简单地将地址添加到地址表中,同时激活两个外键(这是在 NHibernate 中,我无法直接使用 SQL Server 测试它) .
【问题讨论】:
-
你能告诉我们这两张桌子长什么样吗?据我所知,您应该能够将多个外键引用回另一个表。
-
感谢您的回复。我已经为您添加了信息,在关联处于活动状态时仅添加一个地址似乎仍然是个问题。
标签: sql-server nhibernate nhibernate-mapping