给出以下代码:
var Connection = new MySqlConnection("***");
MySqlCommand cmd1 = new MySqlCommand("query1", Connection);
MySqlCommand cmd2 = new MySqlCommand("query2", Connection);
Connection.Open();
var transaction = Connection.BeginTransaction();
cmd1.Transaction = transaction;
cmd2.Transaction = transaction;
var result1 = cmd1.ExecuteNonQuery();
Connection.Close();
// Connection with MySql lost: Initiate new Connection
Connection = new MySqlConnection("***");
Connection.Open();
cmd2.Connection = Connection;
var result2 = cmd2.ExecuteNonQuery();
//transaction.Commit();
如果我尝试在最后一行提交事务,则会收到“连接必须有效且打开才能提交事务”错误,因为事务仍指向旧连接。
在这种情况下提交事务的最佳选择是什么(在事务中间初始化连接)?
我应该从头开始重试吗?
最佳答案
一旦连接丢失,交易就会结束。您不能拥有跨越多个连接的事务。在关闭连接之前,您必须提交或回滚。
您可以为多个语句重复使用同一个连接,只要不关闭它即可。当您打开新连接时,您也必须启动新事务。
关于c# - 在新连接中提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498346/