使用以下代码:
using (ICMSEntities db = new ICMSEntities())
{
productObj.Sectors.Clear();
int[] selected_sectors = cblSectors.Items.Cast<ListItem>()
.Where(n => n.Selected).Select(n => Convert.ToInt32(n.Value)).ToArray();
for (int i = 0; i < selected_sectors.Length; i++)
{
int SectorID = selected_sectors[i];
Sector sectorObj = db.Sectors.SingleOrDefault(x => x.sector_id == SectorID);
productObj.Sectors.Add(sectorObj);
}
db.SaveChanges();
Response.Redirect("~/Products.aspx", true);
}
我正在尝试更新多对多关系表。每个部门可以有一组产品,每个产品可以有一组部门。尝试更新产品实体时,我将清除所有扇区,以防用户从.Clear()
上面使用的复选框列表中选择其他可用扇区。然后从复选框列表中读取并更新。我没有更新记录,而是在具有新的自动递增 ID 的产品中获得了一个新的相同行。所以它正在执行插入而不是更新,我从未指定.AddObject()
.
我在这里做错了什么?或者我应该如何正确实施?
谢谢。