Gerenciamento de conexões no Banco de Dados em páginas ASP.NET

0 respostas
Nicolas_Fernandes

Olá, galera do GUJ!
Tudo bem?

Bom, eu tô pensando aqui em um meio de tratar a conexão com o banco de dados que a minha página WEB requisitará. Quando eu crio aplicações Desktop, eu faço minha classe de conexão da seguinte maneira:
public class ConnectionHelper
{
    private ConnectionHelper()
    {
        providerFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
    }
    public DbConnection RecuperarConnection()
    {
        try 
        {	        
            if (connection == null)
            {
                connection = providerFactory.CreateConnection();
                connection.ConnectionString = "MinhaStringDeConexão";
                connection.Open();
                transaction = connection.BeginTransaction();
             }
             return connection;
         }
         catch (OracleException errOracle)
         {
             throw errOracle;
         }
         catch (Exception err)
         {
             throw err;
         }
    }

    public void Commit()
    {
        try 
	    {	        
	        transaction.Commit();
            transaction = null;
            connection = null;
        }
	    catch (OracleException errOracle)
	    {
	        throw errOracle;
	    }
    }

    public void Rollback()
    {
        try 
	    {	        
	        transaction.Rollback();
            transaction = null;
            connection = null;
        }
	    catch (OracleException errOracle)
            {
	        throw errOracle;
	    }
    }
}

Beleza: com isso, eu mantenho uma única conexão aberta por vez. Ela só é "commitada" ou "rollbackada" quando eu fizer a chamada dos métodos nas classes superiores. Portanto, minha conexão fica aberta para consultas, inserções, atualizações, deleções e outros. Quando chamo o Commit ou o Rollback, essa conexão é fechada e uma nova é criada.

Eu queria fazer algo parecido na WEB. A cada usuário que entrar na página, ele "ganha" uma conexão. Essa conexão fica disponível enquanto ele não clicar em um botão ou alterar algum registro que faça o sistema chamar o Commit ou o Rollback. Alguém tem ideia de como eu posso tratar isso?

Valeu, abraços!

Criado 27 de julho de 2011
Respostas 0
Participantes 1