有没有办法将TransactionScope与现有连接一起使用?

Nat*_*ley 16 c# transactions transactionscope

我有一些代码就像建议使用TransactionScope一样,但有一个环境连接而不是环境事务.

有没有办法将TransactionScope对象与现有连接一起使用,或者.Net框架中是否有替代方案用于此目的?

Mic*_*evý 30

事实上,有一种方法.

connection.EnlistTransaction(Transaction.Current)
Run Code Online (Sandbox Code Playgroud)

它是有效的,如果没有必要,它不会促使事务分发(与文档所说的相反)

HTH


Mit*_*eat 5

要在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;

    ...
    ...

}
Run Code Online (Sandbox Code Playgroud)