Criar e configurar TableAdapters em aplicativos .NET Framework

Observação

Os conjuntos de dados e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. Eles são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.

TableAdapters fornecem comunicação entre seu aplicativo e um banco de dados. Eles se conectam ao banco de dados, executam consultas ou procedimentos armazenados e retornam uma nova tabela de dados ou preenchem uma DataTable existente com os dados retornados. TableAdapters também podem enviar dados atualizados de seu aplicativo de volta para o banco de dados.

TableAdapters são criados para você quando você executa uma das seguintes ações:

  • Arrastar objetos de banco de dados do Gerenciador de Servidores para o Designer de Conjunto de Dados.

  • Execute o Assistente de Configuração da Fonte de Dados e selecione o tipo de fonte de dados Banco de Dados ou Serviço Web.

    Assistente de Configuração da Fonte de Dados no Visual Studio

Você também pode criar um novo TableAdapter e configurá-lo com uma fonte de dados arrastando um TableAdapter da Caixa de Ferramentas para uma região vazia na superfície do Designer de Conjunto de Dados.

Para obter uma introdução ao TableAdapters, confira Preencher conjuntos de dados usando TableAdapters.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio neste artigo. Você pode estar usando outra edição do Visual Studio ou outras configurações de ambiente. Para obter mais informações, confira Personalizar o IDE.

Usar o Assistente de Configuração do TableAdapter

Execute o Assistente de Configuração do TableAdapter para criar ou editar TableAdapters e as DataTables associadas. Você pode configurar um TableAdapter existente clicando com o botão direito nele no Designer de Conjunto de Dados.

Captura de tela mostrando o Assistente de Configuração do Adaptador de Tabelas.

Se você arrastar um novo TableAdapter da Caixa de Ferramentas quando o Designer de Conjunto de Dados estiver em foco, o assistente será iniciado e solicitará que você especifique a qual fonte de dados o TableAdapter deve se conectar. Na próxima página, o assistente pergunta que tipo de comandos ele deve usar para se comunicar com o banco de dados: instruções SQL ou procedimentos armazenados. (Você não verá essa tela se estiver configurando um TableAdapter que já esteja associado a uma fonte de dados.)

  • Você terá a opção de criar um novo procedimento armazenado no banco de dados subjacente se tiver as permissões corretas para o banco de dados. Se você não tiver essas permissões, essa opção não estará disponível.

  • Você também pode optar por executar procedimentos armazenados existentes para os comandos SELECT, INSERT, UPDATE e DELETE do TableAdapter. O procedimento armazenado atribuído ao comando Atualizar, por exemplo, é executado quando o método TableAdapter.Update() é chamado.

Mapear parâmetros desde o procedimento armazenado selecionado até as colunas correspondentes na tabela de dados. Por exemplo, se o procedimento armazenado aceitar um parâmetro chamado @CompanyName que é passado para a coluna CompanyName na tabela, defina a Coluna de Origem do parâmetro @CompanyName como CompanyName.

Observação

O procedimento armazenado atribuído ao comando SELECT é executado chamando o método do TableAdapter nomeado na próxima etapa do assistente. O método padrão é Fill, então o código normalmente usado para executar o procedimento SELECT é TableAdapter.Fill(tableName). Se você substituir o nome padrão de Fill, substitua Fill pelo nome atribuído e substitua "TableAdapter" pelo nome real do TableAdapter (por exemplo, CustomersTableAdapter).

  • Selecionar a opção Criar métodos para enviar atualizações diretamente para o banco de dados é equivalente a definir a propriedade GenerateDBDirectMethods como true. A opção não está disponível quando a instrução SQL original não fornece informações suficientes ou a consulta não é uma consulta atualizável. Essa situação pode ocorrer, por exemplo, em consultas JOIN e consultas que retornam um valor único (escalar).

As Opções Avançadas no assistente permitem que você:

  • Gere instruções INSERT, UPDATE e DELETE com base na instrução SELECT definida na página Gerar instruções SQL
  • Usar simultaneidade otimista
  • Especifique se deseja atualizar a tabela de dados depois que as instruções INSERT e UPDATE forem executadas

Configurar o método de preenchimento de TableAdapter

Às vezes, convém alterar o esquema da tabela do TableAdapter. Para fazer isso, modifique o método primário Fill do TableAdapter. TableAdapters são criados com um método primário Fill que define o esquema da tabela de dados associada. O método primário Fill se baseia na consulta ou no procedimento armazenado inserido quando você configurou originalmente o TableAdapter. É o primeiro método (superior) na tabela de dados no Designer de Conjunto de Dados.

TableAdapter com várias consultas

Todas as alterações feitas no método principal Fill do TableAdapter são refletidas no esquema da tabela de dados associada. Por exemplo, remover uma coluna da consulta no método principal Fill também remove a coluna da tabela de dados associada. Além disso, remover a coluna do método principal Fill remove a coluna de quaisquer consultas adicionais para esse TableAdapter.

Você pode usar o Assistente de Configuração de Consulta do TableAdapter para criar e editar consultas adicionais para o TableAdapter. Essas consultas adicionais devem estar em conformidade com o esquema de tabela, a menos que retornem um valor escalar. Cada consulta adicional tem um nome que você especifica.

O exemplo a seguir mostra como chamar uma consulta adicional chamada FillByCity:

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

Para iniciar o Assistente de Configuração de Consulta do TableAdapter com uma nova consulta

  1. Abra o conjunto de dados no Designer de Conjunto de Dados.

  2. Se você estiver criando uma nova consulta, arraste um objeto Consulta da guia Conjunto de Dados da Caixa de Ferramentas para um DataTable ou selecione Adicionar Consulta no menu de atalho do TableAdapter. Você também pode arrastar um objeto Query para uma área vazia do Designer de Conjunto de Dados, que cria um TableAdapter sem um DataTable associado. Essas consultas só podem retornar valores únicos (escalares) ou executar comandos UPDATE, INSERT ou DELETE no banco de dados.

  3. Na tela Escolher Sua Conexão de Dados, selecione ou crie a conexão que a consulta usará.

    Observação

    Essa tela só aparece quando o designer não pode determinar a conexão adequada a ser usada ou quando não há conexões disponíveis.

  4. Na tela Escolha um Tipo de Comando, selecione a partir dos seguintes métodos de coleta de dados do banco de dados:

    • Usar instruções SQL permite digitar uma instrução SQL para selecionar os dados do banco de dados.

    • Criar novo procedimento armazenado permite que o assistente crie um novo procedimento armazenado (no banco de dados) com base na instrução SELECT especificada.

    • Usar procedimentos armazenados existentes permite executar um procedimento armazenado existente ao executar a consulta.

Para iniciar o Assistente de Configuração de Consulta do TableAdapter em uma consulta existente

  • Se você estiver editando uma consulta de TableAdapter existente, clique com o botão direito na consulta e escolha Configurar no menu de atalho.

    Observação

    Clicar com o botão direito na consulta principal de um TableAdapter reconfigura o TableAdapter e o esquema de DataTable. No entanto, clicar com o botão direito em uma consulta adicional em um TableAdapter configurará apenas a consulta selecionada. O Assistente de Configuração do TableAdapter reconfigura a definição de TableAdapter, enquanto o Assistente de Configuração de Consultas do TableAdapter reconfigura apenas a consulta selecionada.

Para adicionar uma consulta global a um TableAdapter

  • Consultas globais são consultas SQL que retornam um único valor (escalar) ou nenhum valor. Normalmente, as funções globais executam operações de banco de dados, como inserções, atualizações e exclusões. Elas também agregam informações, como uma contagem de clientes em uma tabela ou o total de encargos para todos os itens em uma ordem específica.

    Você adiciona consultas globais arrastando um objeto Query da guia DataSet da Caixa de Ferramentas para uma área vazia do Designer de Conjunto de Dados.

  • Forneça uma consulta que execute a tarefa desejada, por exemplo, SELECT COUNT(*) AS CustomerCount FROM Customers.

    Observação

    Arrastar um objeto Query diretamente para o Designer de Conjunto de Dados cria um método que retorna apenas um valor escalar (único). Embora a consulta ou o procedimento armazenado selecionado possa retornar mais de um único valor, o método criado pelo assistente retorna apenas um único valor. Por exemplo, a consulta pode retornar a primeira coluna da primeira linha dos dados retornados.