TransactionScope与嵌套方法 - MySQL

3
MYSQL是否支持不传递MySqlConnection对象作为参数的TransactionScope? 还是只能在MS SQL 2008及以上版本中使用? 例如:
public void Method()
{
    using (var scope = new System.Transactions.TransactionScope())
    {
        Delete();
        Insert();
        Update();

        scope.Complete();
    }
}

public void Update()
{
     using(MySqlConnection conn = new MySqlConnection())
     {
         // Update something in the Database
     }
}

public void Insert()
{
     using(MySqlConnection conn = new MySqlConnection())
     {
         // Insert something in the Database
     }
}

public void Delete()
{
     using(MySqlConnection conn = new MySqlConnection())
     {
         // Delete something from Database
     }
}

我应该使用MySqlConnection conn对象作为参数进行操作吗?
public void Method()
{
    using (var scope = new System.Transactions.TransactionScope())
    {
        using(MySqlConnection conn = new MySqlConnection())
        {
            Delete(conn);
            Insert(conn);
            Update(conn);
        }

        scope.Complete();
    }
}

public void Update(MysqlConnection conn)
{
    // Update something in the Database
}

public void Insert(MysqlConnection conn)
{
    // Insert something in the Database
}

public void Delete(MysqlConnection conn)
{
    // Delete something from Database
}

有趣的是,在不解析连接的情况下知道测试结果,第二个选项可以工作,但您可以尝试使用 cmd.Connection.EnlistTransaction(Transaction.Current); 而不发送连接。https://dev59.com/RUrSa4cB1Zd3GeqPZcsM - Damith
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接