使用 transactionscope 的過程中,如果存在巢狀事務,比如, bll 層使用了事務,而所呼叫的 dal 內方法也使用了事務的話。假設我們吃掉了 dal 的異常,那麼,外部事務會不會成功?
測試**如下:
using(var ts = new transactionscope())測試發現,transactionscope 所代表的事務,是會往上拋的,即,內部事務失敗,外部也同樣失敗。}
catch
}
ts.complete();
}
所以,輕易不要吃掉 dal 層的異常,否則,業務邏輯層的**執行失敗(sql 執行失敗),上層沒有得到異常,卻又不知道為什麼發生了異常了。
事務巢狀的問題
使用 transactionscope 的過程中,如果存在巢狀事務,比如,bll 層使用了事務,而所呼叫的 dal 內方法也使用了事務的話。假設我們吃掉了 dal 的異常,那麼,外部事務會不會成功?測試 如下 using var ts new transactionscope catch ts.co...
關於事務巢狀失效的問題
舉例 兩個均加了事務註解的方法a和b,在a方法中呼叫b方法,會導致b的事務不起作用,因為加了事務註解的方法,並不是本身在執行,而是 類在執行,而在a方法中呼叫b方法的時候,預設的是this.b 代表並沒有使用 類來執行,所以不會享受 的服務。也就是不起作用的原因。解決方法 1.獲取當前service...
巢狀事務分析 Transactional
事務型別總共有七種 在這就介紹常用的的兩個。transactional propagation propagation.required 如果有事務,那麼加入事務,沒有的話新建立乙個 不指定propagation預設就是這個 transactional propagation propagation...