【发布时间】:2009-06-01 10:46:19
【问题描述】:
我有一些代码的工作方式类似于建议使用的 TransactionScope,但有一个环境连接而不是环境事务。
有没有办法将 TransactionScope 对象与现有连接一起使用,或者 .Net 框架中是否有用于此目的的替代方法?
【问题讨论】:
标签: c# transactions transactionscope
我有一些代码的工作方式类似于建议使用的 TransactionScope,但有一个环境连接而不是环境事务。
有没有办法将 TransactionScope 对象与现有连接一起使用,或者 .Net 框架中是否有用于此目的的替代方法?
【问题讨论】:
标签: c# transactions transactionscope
其实有一种方法。
connection.EnlistTransaction(Transaction.Current)
它可以工作,并且如果没有必要,它不会将事务推广到分布式(与文档所说的相反)
HTH
【讨论】:
connection 是什么?
要将连接加入 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对象后才能打开连接。
【讨论】: