0
我有一個TransactionScope,我的所有SQL Server連接都加入了。如果任何一個調用失敗,所有事情都按照預期正確回滾。如何僅在TransactionScope已提交時才運行自定義C#函數?
但是,我有多個數據存儲,有時需要在同一個調用中更新。第二個數據存儲不會自動登記到事務中。
我對如何阻止其他數據存儲過早獲取數據有一些想法。我的第一個想法是一個ExecutionContext級別的屬性,只有當設置爲一個值(例如提交或回滾爲true或false)時,我的事件纔會更新其他數據存儲。
但是,這似乎相當hacky。
是否有一種內置於TransactionScope對象中的方法,只有在提交發生後才能運行函數?沿
Transaction.Scope.Current.Enlist(
onCommit:() => MyCustomSuccessFunction(),
onRollback:() => MyCustomFailureFunction());
也許你應該包裝你的CA你會得到一個幫助函數,它允許你傳遞提交/回滾函數引用。我沒有意識到ADO.Net有任何「內置」,但如果您使用特定的抽象/ orm,它可能包含某些內容。目前這個問題太寬泛,無法正確回答。 –