问题描述
代码很简单,遍历,修改,保存foreach(SportTeamstindbContext.SportTeams){st.HomeCity="123";dbContext.SaveChanges();}
但执行到dbContext.SaveChanges();的时候会报异常:在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常求大神指点,谢谢
解决方案
解决方案二:
dbContext.SaveChanges();过后,dbcontext会发生改变,是不能继续遍历的
解决方案三:
那要怎么处理呢,比较好的方式
解决方案四:
叫你看内部异常,那你好歹看一下呢?把savechanges这句移到循环之外
解决方案五:
dbContext.SaveChanges();挪到foreach外面。另外看下innerException
解决方案六:
SaveChanges移到循环之外是一种办法,但应用需要及时更新foreach(SportTeamstindbContext.SportTeams)//遍历{doSomething(st);//执行一些耗时操作dbContext.SaveChanges();//即时保存到数据}publicvoiddoSomething(SportTeamsportTeam){//执行一些耗时操作}
解决方案七:
这是后来想到的一个折中的处理办法,即把IDselect出来,然后通过dbContext.SportTems.Find来得到对象实体,这样就可以SaveChanges了,不过这种作法会对性能什么的照成影响吗,或者有什么更好的处理办法吗List<int>lstID=(fromstindbContext.SportTeamsselectst.ID).ToList();foreach(intsportTeamIDinlstID)//遍历{doSomething(dbContext.SportTeams.Find(sportTeamID));//执行一些耗时操作dbContext.SaveChanges();}
解决方案八:
直接写在外面就好了吧你眨下眼睛就都跑完了,较这真我觉得没必要