【问题标题】:Linq Mapping Problem with 1 to 0.1 relationships具有 1 到 0.1 关系的 Linq 映射问题
【发布时间】:2011-08-17 02:10:52
【问题描述】:

我有一个 linq 到实体映射问题。我有三张桌子。

表 1 - ItemsB(ID(键),Part_Number(在构建之前将为空),其他项目 b 信息)
表 2 - ItemsA(ID(key), Part_Number(在构建之前将为空), 其他 item a 信息)
表 3 - WebItems(Item_id, web item information) *由 ItemsB 和 ItemsA 构建并推送到此表后的项目组成。

ItemsA/ItemsB 将与 WebItems 具有 1 到 0.1 的关系。 Part_Number 映射到 Item_id。

我正在使用 EF4.0。

问题是在我如上所述设置关联/映射后,我收到一条错误消息,指出:“在某某行映射片段时出现问题:列 [Part_Number] 正在两个片段中映射到不同的概念侧属性。 "

通常我知道在这种情况下该怎么做。摆脱属性 [Part_Number]。问题是我需要非常频繁地访问 ItemsB 和 ItemsA 中的 [Part_Number] 而无需访问 webitems。更不用说 webitems 并不总是在某些点填充 [Part_Number],具体取决于项目是否已推送到 webitems。

有谁知道如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: entity-framework entity-framework-4 mapping


    【解决方案1】:

    据我了解,ItemAItemBWebItem 是一对一的关系。 EF 中的一对一关系始终要求关系建立在主键上,并且一侧是强制性的(主要的),因为依赖实体在一列中将具有主键和外键。在从属实体中分配主键后,您必须拥有具有相同主键的主体实体,否则您将违反外键定义的参照完整性。

    问题是您的 Part_Number 同时是主键和外键。要在 EFv4 中允许此类映射,您必须使用 Foreign Key association instead of Independent association。这是brief description how to create foreign key association in the designer。一旦定义了引用约束,就返回关联的映射窗口并删除映射。

    【讨论】:

    • Ladislav,我稍微更新了我的 ItemA 和 ItemB 表,以表明 Part_Number 不是这些表中的主键(对此感到抱歉)。据我了解,ItemA/ItemB 与 WebItem 的关系为 1 到 0.1。原因是在 WebItem 构建之前,ItemA 将不存在于 WebItem 中,此时将只有 1 个匹配项。 ItemB 也是如此。这有意义吗?我会看看你的评论,看看它是否仍然适用。感谢您的回复
    • 这可能是有道理的,但在 EF 中是不可能的。任何一对一关系都基于 FK 的唯一性。这意味着 FK 必须是主键或唯一键。问题是 EF 根本不支持唯一键,因为一对一关系只能在共享主键之上建模。
    • 我明白了,我想这就是答案。在这种情况下,将不得不走 SP 路线。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多