我有两个“实体”表:提供者和用户。提供者和用户都可以拥有多个地址(运送,账单等)。
而不是将地址信息放在每个实体表中,我想创建一个对它们共同的表:地址表。例如,我研究了创建一个地址表,其中包含主键(标识列),实体类型(提供者或用户),实体键(父实体表的主键)和地址类型(运输等),有必要的地址信息。
我遇到的一个问题是外键约束。如果我从父实体表中获得与地址行相关的外键,我发现在尝试插入数据时我有外键违规。
我正在考虑删除表格中的FK,然后在EF 4.1上创建手动映射,但我不知道如何执行此操作:
http://i49.tinypic.com/2dt56dv.png(这里是表格的图像 - 地址表中的objectid包含userid或providerid,objecttype是一个可以是“USER”或“PROV”的varchar)
我该如何解决这个问题?我想使用一个表用于地址,但是我不能为一个父项添加子项而另一个父项没有相关行。当然,我想继续使用外键来引用完整性。
由于
答案 0 :(得分:0)
这是一种非常常见的情况。
[Provider table]
ProviderID (PK)
AddressID
[User table]
UserID (PK)
AddressID
[Address table]
AddressID (PK)
Street1
Street2....
进入提供者表并将Provider.addressID中的FK添加到Address.AddressID
进入Users表并将User.addressID中的FK添加到Address.AddressID
应该有效,不会违反FK。