比如有几个Repository:_storeRep,_inventoryRep,_storeItemRep。基类封装有BeginTransaction(); using(var trans=_storeItemRep.BeginTransaction()){ try{ _storeRep.UpdateRange(...); _inventoryRep.Add(...); _storeItemRep.Add(...); _stroeRep.saveChange(); _inventoryRep.saveChange(); _storeItemRep.saveChange(); trans.RollBack();//这里专门不提交,便于测试。写rollBack,但是依然不会rollBack store和inventory。因为使用_storeItemRep打开事务 //第一个saveChange需要是_storeItemRep,而代码中它在最后了。所以这里不会RollBack。个人猜测,我就是这样改后,就能正常回滚了。 //要把开启事务的rep.saveChange()放到第一个。 } catch(ex){ trans.RollBack(); throw; } } 也许和使用的封装框架有关系,等有空自己试试,看是否通常情况都符合这种情况。
标签:core,storeItemRep,RollBack,...,ef,trans,inventoryRep,不回,saveChange From: https://www.cnblogs.com/HelloQLQ/p/17632562.html