具有多个连接的事务(MySql,C#)

Transactions with multiple connections (MySql, C#)

我想问一个问题。我一直在尝试查找有关具有多个连接的事务的一些信息,但我一直无法找到任何好的信息来源。

现在说说我想做的事情。我的代码如下所示:

using (var Connection1 = m_Db.CreateConnection())
using (var Connection2 = m_Db.CreateConnection())
{
    Connection1.DoRead(..., (IDataReader Reader) =>
    {
        // Do stuff
        Connection2.DoWrite(...);
        Connection2.DoRead(..., (IDataReader Reader) =>
        {
            // Do more stuff
            using (var Connection3 = m_Db.CreateConnection())
            {
                Connection3.DoWrite(...);
                Connection3.Commit(); // Is this even right?
            }
        });
    });

    Connection1.DoRead(..., (IDataReader) =>
    {
        // Do yet more stuff
    });
    Connection1.Commit();
    Connection2.Commit();
}

每个 CreateConnection 使用 MySqlConnection::BeginTransaction 创建一个新事务。 CreateConnection 方法创建一个包含 MySqlConnection 的 Connection 对象。 DoRead 函数执行一些 SQL,并在完成后处理 IDataReader。

每个连接在处理后都会进行回滚。

现在做一些笔记:

现在,关于我的问题:

谢谢。

呃,好像没人知道。不过没关系。

目前,我只是采用了只使用一个连接并将所有结果读入一个List>的方法,然后关闭reader,从而避免了必须使用多个连接的问题。

可能存在性能问题?也许吧,但这比处理不确定性和僵局要好。