EF 4.1 POCO映射常用表

时间:2012-07-05 14:12:23

标签: sql-server-2008 entity-framework-4.1

我有两个“实体”表:提供者和用户。提供者和用户都可以拥有多个地址(运送,账单等)。

而不是将地址信息放在每个实体表中,我想创建一个对它们共同的表:地址表。例如,我研究了创建一个地址表,其中包含主键(标识列),实体类型(提供者或用户),实体键(父实体表的主键)和地址类型(运输等),有必要的地址信息。

我遇到的一个问题是外键约束。如果我从父实体表中获得与地址行相关的外键,我发现在尝试插入数据时我有外键违规。

我正在考虑删除表格中的FK,然后在EF 4.1上创建手动映射,但我不知道如何执行此操作:

http://i49.tinypic.com/2dt56dv.png(这里是表格的图像 - 地址表中的objectid包含userid或providerid,objecttype是一个可以是“USER”或“PROV”的varchar)

我该如何解决这个问题?我想使用一个表用于地址,但是我不能为一个父项添加子项而另一个父项没有相关行。当然,我想继续使用外键来引用完整性。

由于

1 个答案:

答案 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。