我有3个表,让我们称它们为Table1,Table2和ManyMany表。
Table 1:
ID1 [PK],
Description1
Table 2:
ID2 [PK],
Description2
ManyMany:
ID1 [PK, FK],
ID2 [PK, FK]
我有2个阵列:
它们都使用Table1中的PK(ID1 == 3)并包含ID2值。
Array1 [5,6,8] // from DB
Array2 [5,6,9] // from front-end
我想要做的是比较2个数组并更新ManyMany以匹配Array2。所以在这种情况下记录'ID1 == 3&&必须删除ID2 == 8'并记录'ID1 == 3&&必须添加ID2 == 9'。但这会改变。可以是多个删除和插入等。
如何更新数据库以匹配array2?
有没有简单的方法来实现这一目标?
删除与ID1匹配的所有记录并再次插入它们将是非常低效的。
我正在使用带有LINQ和EntityFramework的ASP.NET Web API。
答案 0 :(得分:0)
我使用Linq的Except()扩展程序解决了这个问题:
var toRemove = array1.Except(array2)
foreach(var item in toRemove) {
array1.Remove(item);
}
var toAdd = array2.Except(array1)
foreach(var item in toAdd) {
array1.Add(item);
}
//Do whatever you need to persist to the DB...