我的asp.net mvc&中有以下方法:实体frameowrk: -
public void DeleteRack(int id,string username)
{
var rack = ITSys.ITSysRacks.Include(a=>a.Technology.ITSysSwitchPorts).SingleOrDefault(a => a.ITSysRackID == id);
foreach (var s in rack.Technology.ITSysSwitchPorts)
{
ITSys.ITSysSwitchPorts.Remove(s);
}
rack.Technology.IsDeleted = true;
ITSys.Entry(rack.Technology).State = EntityState.Modified;
ITSys.ITSysRacks.Remove(rack);
InsertOrUpdateTechnologyAudit(auditinfo);
}
我想要做的是我想通过循环删除所有子记录,但这会在第一个foreach
之后引发以下异常: -
Collection was modified; enumeration operation may not execute
我尝试将值复制到列表中并且工作正常,但我不确定导致此异常的原因是什么?因为我想循环收集并删除记录? 谢谢
答案 0 :(得分:2)
异常说明了一切:当您枚举枚举类型时,可能无法修改枚举类型。 因此,如果要删除多个元素,请不要在foreach中执行,而是使用RemoveRange
ITSys.ITSysSwitchPorts.RemoveRange(rack.Technology.ITSysSwitchPorts);