【问题标题】:EF 4.1 POCO mapping common tableEF 4.1 POCO 映射公用表
【发布时间】:2012-07-05 23:07:36
【问题描述】:

我有两个“实体”表:Provider 和 User。 Provider 和 User 都可以有多个地址(运输、账单等)。

与其把地址信息放在每个实体表中,我想创建一个它们共同的表:地址表。例如,我研究了创建一个带有主键(身份列)、实体类型(提供者或用户)、实体键(父实体表的主键)和地址类型(运输等)的地址表。带有必要的地址信息。

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

我正在考虑删除表中的 FK,然后在 EF 4.1 上创建手动映射,但我不知道该怎么做:

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

我该如何解决这个问题?我想使用一个表格作为地址,但如果没有另一位父母的相关行,我不能为一位父母添加一个孩子。当然,为了参照完整性,我想继续使用外键。

谢谢

【问题讨论】:

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


    【解决方案1】:

    这是一个很常见的场景。

    [Provider table]
    ProviderID (PK)
    AddressID
    
    [User table]
    UserID (PK)
    AddressID
    
    [Address table]
    AddressID (PK)
    Street1
    Street2....
    

    进入提供者表并从 Provider.addressID 添加一个 FK 到 Address.AddressID

    进入 Users 表并添加一个从 User.addressID 到 Address.AddressID 的 FK

    这应该可行,并且不会违反任何 FK。

    【讨论】:

    • Losbear,你的方案没问题,但这不会让我有多个地址供提供商或用户使用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多