Правильность оформления транзакции

Вопрос чисто по синтаксису, как правильно пишется транзакция, написал два варианта, но не уверен в их адекватности. Обязательно ли для транзакции в блоке catch делать RollBack, или это происходит автоматически?

private static async Task TransactAsync()
{
    using(MySqlConnection connection = 
        new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
    {  
        try
        {
            await connection.OpenAsync();
            using (MySqlTransaction transaction = connection.BeginTransaction())
            {
                using (MySqlCommand cmd = connection.CreateCommand())
                {
                    cmd.CommandText = "INSERT INTO Service VALUES (DEFAULT, 'TEST_TRANSACT', 'Description1', 12.4, 'Location1', 5)";
                    await cmd.ExecuteNonQueryAsync();
                    cmd.CommandText = "INSERT INTO Visitor VALUES (DEFAULT, 'TEST_TRANSACT', '325342', 2.5)";
                    await cmd.ExecuteNonQueryAsync();

                    transaction.Commit();
                }
            }
        }
        catch
        {
        }
        finally
        {
            await connection.CloseAsync();
        }
    }
}
private static async Task ReadFromDataBaseAsync()
{
    using(MySqlConnection connection = 
        new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
    {  
        try
        {
            await connection.OpenAsync();
            MySqlTransaction transaction = connection.BeginTransaction();
            MySqlCommand cmd = connection.CreateCommand();
            cmd.CommandText = "INSERT INTO Service VALUES (DEFAULT, 'TEST_TRANSACT', 'Description1', 12.4, 'Location1', 5)";
            await cmd.ExecuteNonQueryAsync();
            cmd.CommandText = "INSERT INTO Visitor VALUES (DEFAULT, 'TEST_TRANSACT', '325342', 2.5)";
            await cmd.ExecuteNonQueryAsync();

            transaction.Commit();
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            await connection.CloseAsync();
        }
    }
}

Ответы (0 шт):