EF 取消所有修改状态的实体的跟踪

在savechanges()时,如果需要进行 savechanges() 报错之后的 数据处理,在try catch 中 捕捉异常,记录,然后修改别的实体,这次savechanges() 还会报错。

解决办法:先取消所有修改状态的实体的跟踪:EF 取消所有修改状态的实体的跟踪_第1张图片

//把之前修改的实体,标记不追踪,不然SaveChanges()会再次修改,还会报错
 var modifyEntries = busdb.ChangeTracker.Entries().Where(x=>x.State==EntityState.Modified);
 foreach (var entry in modifyEntries)
  {
      entry.State = EntityState.Detached;
   }

之后再做其它的操作。

你可能感兴趣的:(EF,c#)