Linq Mapping问题,1到0.1之间的关系

时间:2011-05-02 15:58:22

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

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

表1 - ItemsB(ID(密钥),Part_Number(在构建之前将为null),其他项目b信息)
表2 - ItemsA(ID(密钥),Part_Number(在构建之前将为null),其他项目为信息)
表3 - WebItems(Item_id,Web项目信息)*在构建并推送到此表后,由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。

有谁知道怎么解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我理解为ItemAItemBWebItem的一对一关系。 EF中的一对一关系总是要求关系建立在主键上,而一方是强制性的(主体),因为依赖实体将在一列中具有主键和外键。在从属实体中分配主键后,必须使用具有相同主键的主体实体,否则将违反由外键定义的引用完整性。

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