如何使用EF创建和更新多对多关系

时间:2009-11-13 23:47:38

标签: entity-framework

我正在使用SQL Server的实体框架。我有两个表之间的多对多关系。我创建了一个只包含2个表的主键字段的连接表。在设计器中,2个表现在具有到另一个的导航属性,返回类型为Collection of X,其中X是另一个实体。到目前为止,一切都应该如此。设置看起来正确。

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

并非每项任务都会有与之相关的产品或产品。当没有与该任务关联的产品时,我应该为Task表的Products导航属性分配什么?

我是否使用Product实体构建EntityCollection集合,并在拥有Product实体时将其分配给Task实体上的Products导航属性?

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

我会对在Entity Framework中处理多对多关系的任何帮助感兴趣。

修改(11/17/2009)
我学到的一件事是,对于连接表中的多对多关系,连接表中的两个字段都需要标记为主键;

1 个答案:

答案 0 :(得分:0)

MSDN拥有关于在实体框架中管理多对多关系的良好文档:

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

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

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

删除的处理方式也相同,在上下文中调用DeleteObject,然后调用SaveChanges。