none
Data Access Layer com TableAdapter RRS feed

  • Pergunta

  • Tenho uma aplicação utilizando VB.NET e SQL Server 2005. Criei um Dataset tipado (cadastro.xsd) e nele criei alguns table adapters. Acontece que quando carrego minha interface win32 chamo o método de preenchimento de cada table adapter. Ocorre que após a chamada dos metodos quando executo o a stored procedure sp_who2 verifico que existem várias conexões criadas para mesma aplicação. Existe alguma maneira de evitar esse problema usando Dataset tipado?
    quinta-feira, 4 de dezembro de 2008 18:03

Todas as Respostas

  • Oi,

     

    Primeiramente, há algo estranho.

     

    Mesmo com multiplos tableAdapters apenas uma conexão estaria sendo gerada, pois a conexão estaria sendo aberta e fechada várias vezes em sequencia. Restaria uma quando fosse conferir o banco, pois ele manteria uma para efeito de pooling de conexão.

     

    Quanto a este primeiro problema, será que todos os tableAdapters estão utilizando a mesma string de conexão ou será que você criou uma string de conexão para cada tableAdapter ? Verifique no app.config (ou propriedades o projeto->settings) quantas strings de conexão você possui e se não existem algumas duplicadas.

     

    Mesmo corrigindo isso ainda assim teríamos várias aberturas e fechamentos de conexão, o que não é bom. Para corrigir situações assim o .NET 3.5 trouxe o tableAdapterManager

     

    Através do tableAdapterManager você pode controlar a conexão em um ponto único para todos os tableadapters do mesmo dataset.

     

    []'s

     

    Dennes

    http://www.bufaloinfo.com.br

    http://cidadaocarioca.blogspot.com

     

    sábado, 13 de dezembro de 2008 01:26
  • Olá,

    Obrigado por responder.

    Olha só: Estou usando a string de conexão localizada e criada na seção "Settings". Essa string é única e comum para todos os Tableadapters. Por exemplo, quando eu crio dois tableadapters com SELECTs e chamo o método "Fill" em cada controle, verifico no SQL Server, sp_who2 que foram criadas duas conexões, mas depois de um tempo, aproximadamente 5 minutos
    fica apenas uma conexão. Pelo que eu conheco do tableadapter a conexão é fechada após o preenchimento do datatable. A questão é: Por que está demorando para o tableadapter encerrar a primeira conexão, por que o atraso?

    No post anterior, você comentou algo sobre o TableAdapterManager. Na prática como é esse gerenciamento? É preciso fazer algo no código?

    Estou ficando louco com isso, risos!

    Mais uma vez obrigado.


    quinta-feira, 8 de janeiro de 2009 03:17