如何在实体框架中添加多对多关系

时间:2009-04-17 21:29:11

标签: vb.net entity-framework

我是新手。我已经能够在存在一对多关系的地方添加新实体。我遇到了一个问题(不知道该怎么做)当关系使用多对多时添加一个新的实体。

在我的EDM中,我有:

  1. 单位
    <Scalar Properties>
    一个。 Org_ID(身份字段)
    湾ORGNAME
    C。 OrgDesc
        <Navigation Properties>
    Building_orgs_Relation

  2. 建筑物
    <Scalar Properties>
    a)Building_ID(身份字段)
    b)Building_Desc
       <Navigation Properties>
    Building_orgs_Relation

  3. Org_Building_Relation
    a)Building_org_ID(身份字段)
    b)Org_ID
    c)Building_ID
      <Navigation Properties>
    大厦
    组织

  4. 我想:

    • 插入新组织
    • 删除现有组织
    • 将组织重新分配到不同的建筑物
    • 更新组织

    有些人可以提供一个如何使用上述EDM进行操作的样本吗? VB代码将不胜感激。

1 个答案:

答案 0 :(得分:1)

目前,实体框架在它可以处理的多对多关系方面确实受到限制。 Visual Studio设计器唯一能识别的是一个只包含两列的表,这两列都是其他两个表的外键,主键是两个外键上的复合键。

因此,如果您可以控制数据库模式,那么您可以做的一件事是更改Org_Building_Relation表以删除Building_org_ID列,并使主键成为Org_ID和Building_ID上的复合键。如果您这样做,那么当您映射表时,实体框架会将其识别为多对多关系。

如果您不能这样做(例如,您无法控制数据库架构),那么您需要确保在EDMX中映射的唯一字段是与其他字段相关的字段表,并且您没有映射主键。这很困难,因为每次更新时映射向导都会丢弃并重新创建存储映射。

另一种选择是不在实体框架中使用“适当的”多对多映射,而只是将关系视为另一个实体而不是将其包含在关系中。

我不记得在即将推出的.NET 4.0中是否有所改进。