在savechanges()时,如果需要进行 savechanges() 报错之后的 数据处理,在try catch 中 捕捉异常,记录,然后修改别的实体,这次savechanges() 还会报错。
解决办法:先取消所有修改状态的实体的跟踪:
//把之前修改的实体,标记不追踪,不然SaveChanges()会再次修改,还会报错
var modifyEntries = busdb.ChangeTracker.Entries().Where(x=>x.State==EntityState.Modified);
foreach (var entry in modifyEntries)
{
entry.State = EntityState.Detached;
}
之后再做其它的操作。