我正在使用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)
我学到的一件事是,对于连接表中的多对多关系,连接表中的两个字段都需要标记为主键;
答案 0 :(得分:0)
MSDN拥有关于在实体框架中管理多对多关系的良好文档:
http://msdn.microsoft.com/en-us/library/bb738695.aspx
插入的说明性指导是在实体集合上调用“Add”方法并指定相关对象(而不是在实体引用上为一对多关系设置Value属性。)
更新的处理方式与任何其他EF更新一样......加载所需对象,设置更改的属性并在上下文中调用SaveChanges。
删除的处理方式也相同,在上下文中调用DeleteObject,然后调用SaveChanges。