欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

EF更新多对多关系表中记录的时候,无法更新关系表的问题。

程序员文章站 2022-10-27 18:27:06
今天在工作中碰到了一个很奇怪的问题。 当在更新一个表A中的记录的时候,会发现,在跟该A表多对多关系的外键表B中,会被增加几条记录。 而原本我希望的是,只在这A表和B表的多对多关系表AB中,增加对应的记录,而不是在实体表B中增加记录(实体表中原本就有该记录,又增加了重复的记录)。 几经测试,终于解决了 ......

今天在工作中碰到了一个很奇怪的问题。

当在更新一个表a中的记录的时候,会发现,在跟该a表多对多关系的外键表b中,会被增加几条记录。

而原本我希望的是,只在这a表和b表的多对多关系表ab中,增加对应的记录,而不是在实体表b中增加记录(实体表中原本就有该记录,又增加了重复的记录)。

几经测试,终于解决了这个问题。

我在操作更新a表的时候,直接用的ef的导航属性,直接对这个导航属性进行的更新操作,将新建的b模型,赋值给了这个a表实体的导航属性。

这就导致了跟新a表后,在b表中增加了重复记录。

而应该在给a表实体的导航属性赋值时,先clear表a的实体的导航属性。然后根据条件,从b表里将想要赋值给a表实体导航属性的记录查询出来,然后赋值给a表的实体的导航属性。

这样,在提交更新的时候,修改后的导航属性才能通过多对多的这个关系关联到ab表(a表和b表的中间关系表),这样更新后,只会在中间关系表ab中增加记录,而不会在b表中新增重复记录了。