错误如图:
修改下方法后可以进行更新了。但是中间多了一步查询
/// <summary> /// 更新一个产品分类 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool UpdateBindClass(DataDicContent model) { var entry = DBENT.Entry(model); if (entry.State == EntityState.Detached) { var set = DBENT.Set<DataDicContent>(); DataDicContent attachedProduct = set.Local.SingleOrDefault(p =>p.ID==model.ID); //如果已经被上下文追踪 if (attachedProduct != null) { var attachedEntry = DBENT.Entry(attachedProduct); attachedEntry.CurrentValues.SetValues(model); } else //如果不在当前上下文追踪 { entry.State = EntityState.Modified; } } if (DBENT.SaveChanges() > 0) { return true; } return false; }
奇怪的是,不知道为什么用原来的方法会出错。
别的表的更新也是这么写的却没有错误。
暂时没时间深究错误原因,先找到解决方案再说,等有时间再深究这个问题。