我有一些代碼可以像建議的使用TransactionScope一樣工作,但是具有環境連接而不是環境事務。有沒有辦法使用TransactionScope與現有的連接?
有沒有辦法使用具有現有連接的TransactionScope對象,或者在.Net框架中是否有替代方案?
我有一些代碼可以像建議的使用TransactionScope一樣工作,但是具有環境連接而不是環境事務。有沒有辦法使用TransactionScope與現有的連接?
有沒有辦法使用具有現有連接的TransactionScope對象,或者在.Net框架中是否有替代方案?
實際上,有一種方法。
connection.EnlistTransaction(Transaction.Current)
它的工作原理和它不促進交易,如果沒有必要的分佈(相反的是什麼文件說,到)
HTH
要將連接加入到TransactionScope中,您需要在其連接字符串中指定'Enlist=true'
並在該TransactionScope對象的範圍內打開連接。
您可以在現有連接上使用SqlConnection.BeginTransaction
。
更新:您可以使用BeginTransaction
這樣的:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
...
...
}
更多的研究後,回答我的問題竟然是:
沒有,連接需要後,被打開TransactionScope對象被實例化。
的事情是,連接被提前TransactionScope的實例化開了。因此我的問題的原因。 – 2009-06-01 11:03:54