Recomendações para estratégias de acesso a dados
ADO.NET emprega um modelo para o acesso a dados em que você em em aberto uma conexão, obter dados ou executa uma operação e fecha a conexão. ADO.NET fornece duas estratégias básicas de como você trabalha com esse modelo. Um modelo é armazenamento de dados em um DataSet, que é um cache, na memória, de registros com que você pode trabalhar enquanto desconectado da fonte de dados.Para usar um DataSet, você cria uma instância dele e em seguida usa um adaptador de dados para preenchê-lo a partir da fonte de dados.Você então trabalha com os dados no dataset — por exemplo, vinculando controles a membros do DataSet.Para obter mais informações, consulte Datasets in Visual Studio Overview.
Uma estratégia alternativa é executar operações diretamente no banco de dados.Nesse modelo, você usa um TableAdapter de consulta ou comando de dados que inclui uma instrução SQL ou uma referência a um procedimento armazenado.Você pode então executar a consulta ou comando para executar a operação.Para obter mais informações, consulte Buscando dados em seu aplicativo.
Armazenando dados em datasets
Um modelo comum para o acesso a dados em aplicativos Visual Studio é armazenar dados em datasets e o uso de TableAdapters ou adaptadores de dados para ler e gravar dados no banco de dados.As vantagens do modelo dataset são:
Trabalhando com várias tabelas - Um dataset pode conter várias tabelas de resultados, que ele mantém como objetos distintas.Você pode trabalhar com as tabelas individualmente ou navegar entre elas como tabelas pai-filho.
Manipulando dados de múltiplas fontes - As tabelas em um dataset podem representar dados de diferente fontes (por exemplo, de diferentes bancos de dados, de arquivos XML, planilhas,m XML files, planilhas, e assim por diante, todos no mesmo dataset).Depois que os dados estejam no DataSet, você pode manipula-lo e relacioná-lo em um formato homogêneo como se ele tivesse vindo de uma única fonte.
Movendo dados entre camadas em um aplicativo distribuído - Mantendo dados em um dataset, você pode facilmente move-lo entre a camada apresentação, camada de negócios, e a camada dados de seus aplicativos.
Troca dados com outros aplicativos - Um dataset fornece uma maneira eficiente efetuar trocas com outros componentes de seu aplicativo e com de outros aplicativos.Os datasets incluem abrangentes suporte a recursos, como serialização de dados como o XML e a leitura e gravação de esquemas XML.
Vinculação de dados - se você estiver trabalhando com formulários, geralmente é mais fácil vincular controles a dados em um dataset que é para carregar programaticamente valores de dados para o controle, depois de executar um comando.
Manter registros para reutilização - Um dataset permite a você trabalhar com os mesmos registros repetidamente sem repetir a consulta ao banco de dados.Usando recursos do dataset, você pode filtrar e classificar registros, e você pode usar o dataset como uma fonte de dados se você estiver executando uma paginação.
Facilidade de programação Quando você trabalha com um dataset, você pode gerar uma classe de arquivo que representa sua estrutura como objetos (por exemplo, uma tabela de Clientes no dataset pode ser acessada como o objeto dataset.Customers).Isso torna mais fácil, transparente, e menor a probabilidade de erros no programa, e recebe suporte por ferramentas Visual Studio, como o IntelliSense, o assistente de configuração do adaptador de dados, e assim por diante.
Executar operações diretamente no banco de dados
Como alternativa, você pode interagir diretamente com o banco de dados.Nesse modelo, use um objeto comando de dados que inclui uma instrução SQL ou uma referência a um procedimento armazenado.Você pode então executar o comando para executar a operação.Para obter mais informações, consulte Trabalhando com DataReaders.
Observação de segurança: |
---|
Quando usando comandos de dados com um CommandType conjunto de propriedades como Text, cuidadosamente verifique informações que são enviadas de um cliente antes de transmiti-la ao seu banco de dados. Usuários mal-intencionados podem tentar para enviar (inserir) instruções SQL modificadas ou adicionais em um esforço para obter acesso não autorizado ou danificar o banco de dados.Antes de você transferir a entrada do usuário num banco de dados, você sempre deverá verificar se as informações são válidas.Uma prática recomendada consiste em sempre usar consultas parametrizadas ou procedimentos armazenados quando possível. |
Executar operações diretamente no banco de dados possui vantagens específicas, que incluem:
Funcionalidade adicional - Conforme observado, existem algumas operações, tais como executar comandos DDL, que você só pode realizar, executando comandos de dados.
Mais controle sobre a execução - Usando comandos (e um leitor de dados, se você estiver lendo dados), você pode obter um controle mais direto sobre como e quando uma instrução SQL ou procedimento armazenado é executado e o como são trazidos os resultados ou retornados os valores.
Menos sobrecarga - Para ler e gravar diretamente no banco de dados, você pode ignorar o armazenamento de dados em um dataset.Como o dataset requer memória, você pode reduzir uma sobrecarga em seu aplicativo.Isso é especialmente verdadeiro em situações onde você pretende usar os dados somente uma vez, como exibir resultados da pesquisa em uma página da Web.Nesse caso, criar e preencher um dataset pode ser uma etapa desnecessária na exibição dos dados.
Menos programação em alguns casos - Em alguns casos, particularmente aplicativos da Web, existe alguma programação adicional necessária para salvar o estado de um dataset.Por exemplo, nas páginas de formulários da Web, a página será recriada a cada processamento; a menos que você adicione programação para salvar e restaurar um dataset, ele também é descartado e recriado a cada processamento.Se você usar um leitor dados para ler diretamente do banco de dados, você evita as etapas adicionais necessárias para gerenciar o dataset.
Recomendações para o acesso a dados
As seções a seguir fornecem recomendações para qual estratégia de acesso a dados a ser utilizada com tipos específicos de aplicativos.
Windows Forms
Em geral, em um Windows Form, use um dataset.Os Windows Forms são usados em clientes onde o formulário não é criado e descartado (juntamente com seus dados) em cada operação do usuário, como nos formulários da Web.Os aplicativos Windows Forms também tradicionalmente oferecem cenários de acesso a dados que se beneficiam de manter um cache de registros, como exibir registros num formulário.Para obter mais informações, consulte: Criando aplicativos clientes de dados.
Especificamente, use um dataset sob as seguintes circunstâncias:
Se você estiver trabalhando repetidamente com os mesmos registros, como permitindo que um usuário navegue entre registros.
Se você estiver usando uma arquitetura de vinculação de dados no Windows Forms, que é especificamente projetada para funcionar com datasets.
Para qualquer outro motivo listado acima em formulários da Web.
Use um TableAdapter de consulta ou comando de dados sob as seguintes circunstâncias:
Se você estiver obtendo um valor único do banco de dados
Se você estiver executando uma operação sem-consulta, como um comando DDL.
Se você estiver obtendo dados de somente leitura para exibir em um formulário — por exemplo, criar um relatório.Estabelecidos de forma diferente, se não houver necessidade de manter os dados disponíveis após o acesso, use um comando de dados.
Formulários da Web
Em geral, use comandos de dados; para buscar dados, use uma leitor de dados.Como páginas de formulários da Web e seus controles e componentes são recriados sempre que a página faz processamento, ele geralmente não é eficiente para criar e preencher um dataset a cada vez, a menos que você também pretenda efetuar o cache entre os processamentos.
Use um dataset sob as seguintes circunstâncias:
Você deseja trabalhar com várias tabelas separadas ou tabelas com fontes de dados diferentes.
Você está trocando dados com outro aplicativo ou um componente com um Web Service em XML.
Você precisará executar um extensivo processamento com cada registro para obtê-lo do banco de dados.Se você usar um comando de dados e um leitor de dados, o processamento de cada registro à medida que você lê-lo pode resultar na conexão sendo mantida aberta por um longo período, que poderá afetar o desempenho e escalonabilidade de seu aplicativo.
Se seu processamento dos dados envolve registros interdependentes (por exemplo, pesquisar informações em registros relacionados).
Se você deseja efetuar operações XML, como transformações XSLT sobre os dados.
Se você preferir a facilidade de programação fornecidas pelos datasets.
Serviços Web XML
Serviços Web XML são aplicativos ASP.NET e, portanto, usam o mesmo modelo sistema autônomo páginas de Web Forms: o serviço Web XML é criado e descartado sempre que for feita uma telefonar a ele.Isso sugere que o modelo de acesso a dados para um Web Services XML é amplamente o mesmo como para formulários da Web.No entanto, os Web Services XML são frequentemente objetos da camada intermediária, e uma parte importante de seu objetivo é frequentemente trocar dados com outros aplicativos através da Web.
Utilize um DataSet se:
Seu Web Services XML enviam e recebem dados - por exemplo, envia um valor de retorno de um método e o recebe como um argumento de um método.Isso é uma escolha fundamental nos Web Services XML; mesmo que existam outros motivos você poderá considerar usar um comando de dados, trocar dados com outros componentes quase sempre significa que você deve usar um dataset.
Para qualquer um dos motivos listados acima para formulários da Web.
Use um comando de dados (e se apropriado, um leitor de dados) sob as seguintes circunstâncias:
O Web Service XML está recuperando um valor único.
O Web Service XML está executando uma operação sem-consulta, como um comando DDL.
O Web Service XMl está chamando um procedimento armazenado para executar uma lógica dentro do banco de dados.
Consulte também
Conceitos
Outros recursos
Explicações Passo a passo sobre Dados
Guia de Introdução para acesso a dados
Conectando-se a Dados no Visual Studio
Preparando seu aplicativo para receber dados
Buscando dados em seu aplicativo
Exibindo dados em formulários em aplicativos do Windows