1

私たちは C# と mysql を .net コネクタで使用してきましたが、個々のコミットですべてのコミットに失敗することがあります。そのため、分散トランザクションをサポートするこのツールhttp://www.devart.com/dotconnect/mysql/に移行しています。複数の接続を配置する方法がよくわからないというだけで、すべて正常に動作します。方法 1 は、各接続を互いに入れ子にします。方法2は別途です。接続を閉じる必要がある場所、または transScope.Complete(); によって処理される場所。およびtransScope.Dispose();

方法 1.

using (TransactionScope transScope = new TransactionScope())
{
     string myConnStringLocal = "User Id=***;Password=****;Host=" + globalSettings.settingLocalIP + ";Database=" + globalSettings.settingLocalDB;
     using (MySqlConnection connectionLocal = new MySqlConnection(myConnStringLocal))
     {
       connectionLocal.open() 

       string myConnStringCentral = "User Id=***;Password=*****;Host=" + globalSettings.settingCentralIP + ";Database=" + globalSettings.settingCentralDB;
         using (MySqlConnection connectionCentral = new MySqlConnection(myConnStringCentral))
         {
             connectionCentral.Open();
               string myConnStringCentralCopy = "User Id=*****;Password=*****;Host=" + globalSettings.settingCentralCopyIP + ";Database=" + globalSettings.settingCentralCopyDB;
              using (MySqlConnection connectionCentralCopy = new MySqlConnection(myConnStringCentralCopy))
             {
                 connectionCentralCopy.Open();   
             }
         }
     }

     if (rollbackBoolean == 0)
        transScope.Complete();
     else
        transScope.Dispose();
}

方法 2

using (TransactionScope transScope = new TransactionScope())
{
     string myConnStringLocal = "User Id=***;Password=****;Host=" + globalSettings.settingLocalIP + ";Database=" + globalSettings.settingLocalDB;
     using (MySqlConnection connectionLocal = new MySqlConnection(myConnStringLocal))
     {
         connectionLocal.open() 
     }

     string myConnStringCentral = "User Id=***;Password=*****;Host=" + globalSettings.settingCentralIP + ";Database=" + globalSettings.settingCentralDB;
    using (MySqlConnection connectionCentral = new MySqlConnection(myConnStringCentral))
    {
       connectionCentral.Open();
    }

    string myConnStringCentralCopy = "User Id=*****;Password=*****;Host=" + globalSettings.settingCentralCopyIP + ";Database=" + globalSettings.settingCentralCopyDB;
    using (MySqlConnection connectionCentralCopy = new MySqlConnection(myConnStringCentralCopy))
    {
        connectionCentralCopy.Open();   
    }

    if (rollbackBoolean == 0)
        transScope.Complete();
    else
        transScope.Dispose();
}
4

1 に答える 1