说我有这个。
一个国家有很多产品,产品可以有很多国家(多对多)。
现在产品A有
US
Canada
现在由于某种原因,他们停止在加拿大销售产品A.如何更新产品A以删除关系,因为现在产品A已不在加拿大。
我是否应该清除名为ProudctA.Countries.Clear()
的列表。然后去添加仍然选择的国家?
ProductA.Countries.Add(loadCountry(id)) // this would be a loop and I would be loading the ids from the select countries.
或者我应该知道如何找出已经改变的东西并称之为删除或什么?
我从服务器上获取Guid列表。用户只需看到一个选择列表框并选择国家/地区。
当他们编辑产品时,美国和加拿大都被选中,但随后他们选择取消选择加拿大,只有美国Guid被选择发回服务器。
答案 0 :(得分:0)
我会做这样的事情
countriesToRemove = productA.Countries.Where(c => !selectedIds.Contains(c.Id)).ToList();
foreach(var country in countriesToRemove)
{
productA.Countries.Remove(country);
}
但是,由于您已经加载了它们(在会话缓存中)并且链接表条目被移除并插入,所以只有在没有删除任何内容时才会有效。