代码之家  ›  专栏  ›  技术社区  ›  DaveB

如何创建和更新与EF的多对多关系

  •  0
  • DaveB  · 技术社区  · 15 年前

    我正在将实体框架与SQL Server一起使用。我在两张表之间有一种多对多的关系。我创建了一个只有两个表的主键字段的联接表。在设计器中,这两个表现在具有指向另一个表的导航属性,返回类型为x,其中x是另一个实体。到目前为止,一切正常。设置看起来正确。

    Task           TaskProducts     Product
    ==========     ============     =======
    TaskID         TaskID           ProductID
    Description    ProductID        Name
    

    不是每个任务都有一个或多个产品与之关联。当没有与任务相关联的产品时,我应该为任务表的产品导航属性分配什么?

    我是否使用产品实体构建EntityCollection集合,并在有产品实体时将其分配给任务实体上的产品导航属性?

    在对任务实体上的产品导航属性进行更新(添加、删除和更改)时,我是否像其他集合一样使用它?有什么特别的事要注意吗?

    我对在实体框架中处理多对多关系的任何帮助都感兴趣。

    编辑(11/17/2009)
    我学到的一点是,对于多对多关系,使用联接表时,联接表中的两个字段都需要标记为主键;

    1 回复  |  直到 12 年前
        1
  •  0
  •   FosterZ    12 年前

    对于在实体框架中管理多对多关系,msdn有很好的文档:

    http://msdn.microsoft.com/en-us/library/bb738695.aspx

    插入的规定性指导是调用实体集合上的“添加”方法并指定相关对象(而不是为一对多关系的实体引用设置值属性)。

    更新的处理方式与其他EF更新一样…加载所需的对象,设置更改的属性并在上下文中调用SaveChanges。

    删除的处理方式也一样,在上下文中调用DeleteObject,然后保存更改。