解决方法EF框架出现 ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
可以使用Find查询后,再次修改 则解决问题
try { //事物 多表操作,操作放在 TransactionScope using (var trac = new TransactionScope()) { //用find方法可解决 var uu = sp.user.Find(u.id); sp.Entry<user>(uu).State = System.Data.EntityState.Detached; //更新user数据表 sp.user.Attach(uu); uu.cishucount=uu.cishucount+ 1; sp.SaveChanges(); userrecord usreord = new userrecord { cardtype = u.cardtype, userid=u.id, addtime=dateTime, usermanger=GlobalsInfo.admin, cardlog="共打卡"+ u.cishucount + "次" }; sp.userrecord.Add(usreord); sp.SaveChanges(); trac.Complete(); } } catch (Exception ex) { Transaction.Current.Rollback(); return MemberStateDto.setMemberStateDto(500, "数据出错,请重新打卡!"); }