给出以下代码:
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();
如果我尝试在最后一行提交事务,我得到" Connection必须有效并且打开以提交事务" 错误,因为事务仍然指向旧连接。
在此方案中提交事务的最佳选择是什么(在事务中间初始化连接)?
我应该从一开始就重试吗?
答案 0 :(得分:0)
一旦连接丢失,事务就会结束。您无法拥有跨多个连接的事务。您必须在关闭连接之前提交或回滚。
您可以为多个语句重复使用相同的连接,只要您不关闭它即可。当您打开新连接时,您也必须开始新的交易。