是什麼下面的BeginTransaction方法之間的區別:不同的BeginTransaction方法之間的區別。
SqlConnection.BeginTransaction方法
DbConnection.BeginTransaction方法
DbConnection.BeginDbTransaction方法
此外,它們如何與TransactionScope()不同System.Transaction中的方法?
是什麼下面的BeginTransaction方法之間的區別:不同的BeginTransaction方法之間的區別。
SqlConnection.BeginTransaction方法
DbConnection.BeginTransaction方法
DbConnection.BeginDbTransaction方法
此外,它們如何與TransactionScope()不同System.Transaction中的方法?
SqlConnection.BeginTransaction
創建SqlTransaction
,這是特定於MS SQL Server的DbConnection.BeginTransaction
創建一個DbTransaction
,這是通用的,並依賴於底層的連接上創建一個特定的數據庫事務。如果您的DbConnection
類型爲SqlConnection
,則這將是SqlTransaction
。DbConnection.BeginDbTransaction
是一種受保護的方法,如果您要創建自己的繼承自DbConnection
的類,則可以覆蓋該方法。編輯:
這些都是特定於從它們被創建的數據庫連接,其中使用不同於一個TransactionScope,這是不依賴於數據庫的。我相信如果你想協調多個連接之間的交易,你必須明確地呼叫DbConnection.EnlistTransaction(transaction)
。使用TransactionScope,連接將(如果數據庫提供者至少應該)自動登錄到TransactionScope中(如果連接打開時存在)。在WCF中,TransactionScope也可以跨服務邊界傳遞,並可用於將多個服務調用的結果作爲單個事務提交。
感謝您的解釋。你能區分這些從TransactionScope()嗎?他們之間有任何關係嗎? – Baig
這些MSDN文檔有哪些說明? – Oded