在BeginTransaction()之后传递IDbConnection

时间:2016-09-12 14:04:44

标签: c# mysql transactions dapper

我有几个方法被顺序调用,它们都按顺序执行MySQL数据库查询:

UpdateInvoice() - > UpdateOrderItems(connection)
      |---------- > UpdateGrandTotal(connection)
      |---------- > UpdateAdvances(connection)

我有一个用于连接和交易的使用块,如下所示:

using (var connection = ConnectionManager.GetConnection()){
    using (var transaction = connection.BeginTransaction(){
        UpdateOrderItems(connection)
        UpdateGrandTotal(connection)
        UpdateAdvances(connection)
    }
}

我的问题是,一旦我从connection.BeginTransaction()创建了一个事务,我是否需要传递事务对象以使其以原子方式工作?根据我的知识,因为在连接时调用了BeginTransaction(),它处于事务模式,并且单个连接一次只能有一个事务。

我错了吗?

P.S。我正在使用dapper在这些方法中执行查询

1 个答案:

答案 0 :(得分:0)

每个连接只能有1个事务(如果您想知道,无论IsolationLevel如何)。但是,您可以使用System.Transactions.TransactionScope嵌套多个事务。

我希望这能有所启发。