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

Posted 双子双星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF更新多对多关系表中记录的时候,无法更新关系表的问题。相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

以上是关于EF更新多对多关系表中记录的时候,无法更新关系表的问题。的主要内容,如果未能解决你的问题,请参考以下文章

从多对多关系的桥接表中检索数据的查询[关闭]

反对 js:无法使用连接表额外属性更新多对多关系。说附加属性无效

多对多关系 - 如何更新数据透视表中的属性

定义引用同一个表的多对多关系(EF7/core)

EF Core 5.0 - 更新 ASP.NET Core Web API 中的多对多实体

更新多对多关系中的实体