我有一個過程Proc1調用另一個過程Proc2,並與「BEGIN TRANSCTION」 如果我在第二個過程中得到一個錯誤,它將回滾這兩個過程。好!在存儲過程回滾vs回滾在C#代碼
但我的C#代碼中,我也有這個
...
dbCommand.Transaction.Commit();
dbCnn.Close();
}
catch (Exception ex)
{
if (dbCommand.Transaction != null)
**dbCommand.Transaction.Rollback();**
if (dbCnn.State == ConnectionState.Open)
dbCnn.Close();
throw ex;
}
是否 「dbCommand.Transaction.Rollback();」知道我在談論哪個交易?如果我有兩個事務吃了同樣的過程,沒有標籤,那麼C#回滾正確的事務會是一個問題嗎?
沒有「兩次交易」這樣的事情 - 您可以隨心所欲地開始交易,如果您願意,可以獲得@@ TRANCOUNT爲500,但是如果您執行一次ROLLBACK,它們將全部回滾。就我個人而言,我將事務控制保存在存儲過程中 - 我發現很少有C#應用程序需要參與的情況。 – 2014-10-30 13:38:21