2009-11-13 150 views
0

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

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

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

当我确实拥有产品实体时,是否会使用产品实体构建一个EntityCollection集合,并将其分配给Task实体上的Products导航属性?

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

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

编辑(11/17/2009)
有一件事我学到的是一个多对多的关系工作,连接表,连接表中的两个字段需要被标记作为主键;

回答

0

MSDN对实体框架管理许多一对多的关系,良好的文档:

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

为嵌入式说明性指导是调用实体集的“添加”方法,并指定(与在一对多关系的实体引用上设置Value属性相比)。

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

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

+0

虽然这个链接的文档没有专门处理多对多的关系,但是他们被提及并且信息是有用的。如何使用集合并且不关心管理连接表真的很不错。 – DaveB 2009-11-17 17:32:11