Dot-Net

了解 TransactionScopeOptions:RequiresNew = Suppress + Required?

  • April 3, 2016

我相信我理解TransactionScopeOption.SuppressTransactionScopeOption.Required但很難理解是什麼TransactionScopeOption.RequiresNew。根據我閱讀的最後一個解釋,以下兩個程式碼塊在功能上是否相同?這是什麼RequiresNew意思的準確表示嗎?

using (var ts1 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
 DoStuff();
 ts1.Complete();
}

using (var ts2 = new TransactionScope(TransactionScopeOptions.Suppress))
{
 using (var ts3 = new TransactionScope())
 {
   DoStuff();
   ts3.Complete();
 }

 ts2.Complete(); // not required but recommended for consistency's sake
}

要更好地理解事務範圍,您可以閱讀這篇 msdn 文章

除了創建的嵌套範圍的數量不同之外,我找不到很好的解釋這兩者有何不同。無論交易是否已經存在,這兩種情況都應該導致相同數量的交易。我找不到可以參考的好資源,但我總是會選擇 RequiresNew,而不是組合的 Suppress/Required。RequiresNew 基本上意味著:“無論是否已經有交易,都給我一個新的”。

更新:如果第一個連結仍然斷開,您可以在此處 的迴路存檔中找到它

引用自:https://stackoverflow.com/questions/6987862