Sql server 2008 EF 4.1 POCO映射通用表

Sql server 2008 EF 4.1 POCO映射通用表,sql-server-2008,entity-framework-4.1,Sql Server 2008,Entity Framework 4.1,我有两个“实体”表:Provider和User。提供商和用户都可以有多个地址(发货、计费等) 而不是把地址信息放在每个实体表中,我想创建一个它们都通用的表:地址表。例如,我研究了如何创建一个地址表,其中包含主键(标识列)、实体类型(提供者或用户)、实体键(父实体表的主键)和地址类型(发货等),以及必要的地址信息 我遇到的一个问题是外键约束。如果我有一个与地址行相关的父实体表中的外键,那么我在尝试插入数据时发现外键冲突 我正在考虑删除表中的FK,然后在EF 4.1上创建手动映射,但我不知道如何才能

我有两个“实体”表:Provider和User。提供商和用户都可以有多个地址(发货、计费等)

而不是把地址信息放在每个实体表中,我想创建一个它们都通用的表:地址表。例如,我研究了如何创建一个地址表,其中包含主键(标识列)、实体类型(提供者或用户)、实体键(父实体表的主键)和地址类型(发货等),以及必要的地址信息

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

我正在考虑删除表中的FK,然后在EF 4.1上创建手动映射,但我不知道如何才能做到这一点:

(这是表的图像-地址表中的objectid包含userid或providerid,objecttype是一个varchar,可以是“USER”或“PROV”)

我怎样才能避开这件事?我希望使用一个表来表示地址,但如果在另一个父级上没有相关行,则无法为一个父级添加子级。当然,我希望继续使用外键来实现引用完整性


谢谢

这是一种非常常见的情况

[Provider table]
ProviderID (PK)
AddressID

[User table]
UserID (PK)
AddressID

[Address table]
AddressID (PK)
Street1
Street2....
进入provider表并将FK从provider.addressID添加到Address.addressID

进入Users表并将FK从User.addressID添加到Address.addressID


这应该行得通,不会违反FK。

Losbear,您的方案还可以,但这不会让我有多个提供商或用户地址,对吗?