我有一些代码可以像建议的使用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