Verificar se conexão possui transação aberta para ela (C#/ADO.NET)

0 respostas
N

E aí, galerinha!
Tudo bem?

Tô desenvolvendo uma camada de conexões para meu software aqui, e me surgiu um problema.
Eu tenho um método chamado GetCommand(), que recebe uma conexão ativa por parâmetro e me devolve um objeto DbCommand com uma transação aberta sobre ele. Eu quero fazer uma validação do tipo: "JÁ EXISTE TRANSAÇÃO ABERTA PARA ESSA CONEXÃO? SE SIM, NÃO FAZ NADA, SE NÃO, ABRE UMA NOVA.", sabem?

Esse é o meu método GetCommand():
public static DbCommand GetCommand(DbConnection connection)
{
    try
    {
        DbCommand command = providerFactory.CreateCommand();
        command.Transaction = connection.BeginTransaction();
        command.Connection = connection;

        return command;
    }
    catch (DbException errDB)
    {
        throw errDB;
    }
    catch (Exception err)
    {
        throw err;
    }
}
O que eu quero fazer é algo do tipo:
public static DbCommand GetCommand(DbConnection connection)
{
    try
    {
        DbCommand command = providerFactory.CreateCommand();
        if (/*MINHA CONEXÃO NÃO POSSUI UMA TRANSAÇÃO ABERTA*/)
        {
            command.Transaction = connection.BeginTransaction();
        }        
        command.Connection = connection;

        return command;
    }
    catch (DbException errDB)
    {
        throw errDB;
    }
    catch (Exception err)
    {
        throw err;
    }
}

Alguém tem ideia de como posso fazer isso?
Abraços!

Criado 28 de julho de 2011
Respostas 0
Participantes 1