【问题标题】:TransactionScope with nested methods - MySQL具有嵌套方法的 TransactionScope - MySQL
【发布时间】:2013-07-18 08:24:03
【问题描述】:

MYSQL是否支持TransactionScope而不传递MySqlConnection对象作为参数? 还是仅适用于 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); stackoverflow.com/questions/1893862/… 而不发送连接

标签: c# asp.net mysql transactions transactionscope


【解决方案1】:

您不能在单个TransactionScope 中创建多个MySqlConnection 对象:bug 50773

一种解决方案是升级到https://github.com/mysql-net/MySqlConnector 哪个does support TransactionScope

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    相关资源
    最近更新 更多