TransactionScope concluído prematuramente

Eu tenho um bloco de código que é executado dentro de um TransactionScope e dentro desse bloco de código eu faço várias chamadas para o banco de dados. Seleciona, atualiza, cria e exclui toda a gama. Quando executo minha exclusão, eu a executo usando um método de extensão do SqlCommand que reenviará automaticamente a consulta se houver um conflito, pois essa consulta pode potencialmente atingir um conflito.

Acredito que o problema ocorre quando um impasse é atingido e a função tenta reenviar a consulta. Este é o erro que recebo:

A transação associada à conexão atual foi concluída, mas não foi descartada. A transação deve ser descartada antes que a conexão possa ser usada para executar instruções SQL.

Este é o código simples que executa a consulta (todo o código abaixo é executado no uso do TransactionScope):

using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.App))
{
    sqlCommand.Connection.Open();
    sqlCommand.ExecuteNonQueryWithDeadlockHandling();
}

Aqui está o método de extensão que reenvia a consulta de deadlock:

public static class SqlCommandExtender
{
    private const int DEADLOCK_ERROR = 1205;
    private const int MAXIMUM_DEADLOCK_RETRIES = 5;
    private const int SLEEP_INCREMENT = 100;

    public static void ExecuteNonQueryWithDeadlockHandling(this SqlCommand sqlCommand)
    {
        int count = 0;
        SqlException deadlockException = null;

        do
        {
            if (count > 0) Thread.Sleep(count * SLEEP_INCREMENT);
            deadlockException = ExecuteNonQuery(sqlCommand);
            count++;
        }
        while (deadlockException != null && count < MAXIMUM_DEADLOCK_RETRIES);

        if (deadlockException != null) throw deadlockException;
    }

    private static SqlException ExecuteNonQuery(SqlCommand sqlCommand)
    {
        try
        {
            sqlCommand.ExecuteNonQuery();
        }
        catch (SqlException exception)
        {
            if (exception.Number == DEADLOCK_ERROR) return exception;
            throw;
        }

        return null;
    }
}

O erro ocorre na linha:

sqlCommand.ExecuteNonQuery();

questionAnswers(7)

yourAnswerToTheQuestion