1
我需要在三個數據庫中執行分佈式事務。爲此,我在我的服務中注入了三個會話工廠。我管理與下面的代碼交易:多個會話工廠中的TransactionScope
using(var ts = new TransactionScope(TransactionScopeOption.RequiresNew,
new TransactionOptions() { IsolationLevel = RepeatableRead }))
using(var session1 = _sessionFactory1.OpenSession())
using(var tran1 = session1.BeginTransaction()
using(var session2 = _sessionFactory2.OpenSession())
using(var tran2 = session2.BeginTransaction()
using(var session3 = _sessionFactory3.OpenSession())
using(var tran3 = session3.BeginTransaction()
{
//Entity manipulation
tran1.Commit();
tran2.Commit();
tran3.Commit();
ts.Complete();
}
至極運作良好,花花公子,問題是,如果我發出交易完成前return語句,第二屆工廠獲取一個不一致的狀態,在下次調用時,當我嘗試打開會話時拋出異常:
分佈式事務完成。請在新的 事務或NULL事務中加入此會話。
我需要嵌套結構,因爲我在實體操作部分中發出了一定數量的命令,每個命令都在三個數據庫中進行更改。