ef.core 事務不回滾的我遇到的一種情況分享

比如有幾個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;
}
}
也許和使用的封裝框架有關係,等有空自己試試,看是否通常情況都符合這種情況。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章