2012-07-05 84 views
0

我有两个“实体”表:提供者和用户。提供者和用户都可以有多个地址(发货,账单等)。EF 4.1 POCO映射公共表

相反,然后把地址信息放在每个实体表中,我想创建一个对他们都通用的表:一个地址表。例如,我着眼于创建一个包含主键(标识列),实体类型(提供者或用户),实体键(父实体表的主键)和地址类型(发货等)的地址表,与必要的地址信息。

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

我想在表中移除FK,然后在EF 4.1手动映射创建,但我不知道我怎么可以这样做:

http://i49.tinypic.com/2dt56dv.png(这里是表的形象 - OBJECTID在地址表保存用户标识符或提供者标识符和对象类型是可以是“用户”或“PROV”的varchar)

我该如何解决这个问题?我想为地址使用一张表,但是我无法为一位家长添加子女,而在另一位父母上没有相关行。当然,我想继续使用外键来实现参照完整性。

谢谢

回答

0

这是一个很常见的情况。

[Provider table] 
ProviderID (PK) 
AddressID 

[User table] 
UserID (PK) 
AddressID 

[Address table] 
AddressID (PK) 
Street1 
Street2.... 

走进提供商表和Provider.addressID添加到FK Address.AddressID

进入用户表,然后从User.addressID添加到FK Address.AddressID

应工作没有FK会被侵犯。

+0

Losbear,你的场景是好的,但这不会让我有多个地址提供者或用户权限? – VAAA 2012-07-05 15:17:06