2011-07-28 122 views
0

是什麼下面的BeginTransaction方法之間的區別:不同的BeginTransaction方法之間的區別。

  1. SqlConnection.BeginTransaction方法

  2. DbConnection.BeginTransaction方法

  3. DbConnection.BeginDbTransaction方法

此外,它們如何與TransactionScope()不同System.Transaction中的方法?

+5

這些MSDN文檔有哪些說明? – Oded

回答

7
  1. SqlConnection.BeginTransaction創建SqlTransaction,這是特定於MS SQL Server的
  2. DbConnection.BeginTransaction創建一個DbTransaction,這是通用的,並依賴於底層的連接上創建一個特定的數據庫事務。如果您的DbConnection類型爲SqlConnection,則這將是SqlTransaction
  3. DbConnection.BeginDbTransaction是一種受保護的方法,如果您要創建自己的繼承自DbConnection的類,則可以覆蓋該方法。

編輯:

這些都是特定於從它們被創建的數據庫連接,其中使用不同於一個TransactionScope,這是不依賴於數據庫的。我相信如果你想協調多個連接之間的交易,你必須明確地呼叫DbConnection.EnlistTransaction(transaction)。使用TransactionScope,連接將(如果數據庫提供者至少應該)自動登錄到TransactionScope中(如果連接打開時存在)。在WCF中,TransactionScope也可以跨服務邊界傳遞,並可用於將多個服務調用的結果作爲單個事務提交。

+1

感謝您的解釋。你能區分這些從TransactionScope()嗎?他們之間有任何關係嗎? – Baig