應用層一個AppService默認是一個工作單元,默認是開啟的,默認是事務的。因為應用服務方法應該是原子的且一般都會使用數據庫。
但是有些情況需要關閉工作單元
1.AppService有多個操作需要操作數據庫,但是有些操作需要就算是AppService出現了異常也要SaveChanges
例如,在某個方法中從數據庫獲取自動的編碼(合同編碼),然后第其他系統的接口(新建數據)0,如果接口調用成功了,但是AppService其他操作失敗了,那么會拋異常,造成整個工作單元都沒有
SaveChanges,那么下次再執行該操作時,還是同一個編碼去調其他系統的接口,這個時候接口就會報錯。
當然可以要求接口做冪等,但是如果其他系統的接口沒有冪等的情況下,用這種方法可以避免錯誤,另外當然會帶來來及數據,這是不可避免的
關閉工作單元的方式[UnitOfWork(isTransactional: false)]或者[UnitOfWork(false)]