我想问一个问题。我一直试图找到有关多个连接的交易的一些信息,但我还没有找到任何好的信息来源。
现在我想做什么。我的代码看起来像这样:
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。
每个连接都会在处理时进行回滚。
现在有一些注意事项:
现在,关于我的问题:
感谢。
答案 0 :(得分:0)
现在,我只是使用一个连接方法并将所有结果读入List>,然后关闭阅读器,从而避免了必须使用多个连接的问题。
可能存在性能问题吗?也许,但它比处理不确定性和僵局更好。