Passo a passo: manipular dados (Visual Basic)

Essa explicação passo a passo fornece um cenário completo fundamental do LINQ to SQL para adicionar, modificar e excluir dados em um banco de dados. Você usará uma cópia do banco de dados de exemplo Northwind para adicionar um cliente, alterar o nome de um cliente e excluir um pedido.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.

Este passo a passo foi escrito usando as Configurações de Desenvolvimento do Visual Basic.

Pré-requisitos

Este passo a passo requer o seguinte:

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest2") para armazenar arquivos. Crie essa pasta antes de iniciar o passo a passo.

  • O banco de dados de exemplo Northwind.

    Se você não tiver esse banco de dados no seu computador de desenvolvimento, poderá baixá-lo no site de download da Microsoft. Para obter as instruções, confira Baixar bancos de dados de exemplo. Depois de baixar o banco de dados, copie o arquivo northwnd.mdf para a pasta c:\linqtest2.

  • Um arquivo de código do Visual Basic gerado do banco de dados Northwind.

    Você pode gerar esse arquivo usando o Object Relational Designer ou a ferramenta SQLMetal. Este passo a passo foi escrito usando a ferramenta SQLMetal com a seguinte linha de comando:

    sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize

    Para obter mais informações, consulte SqlMetal.exe (ferramenta de geração de código).

Visão geral

Este passo a passo consiste em seis tarefas principais:

  • Criando a solução LINQ to SQL no Visual Studio.

  • Adicionar o arquivo do código de banco de dados ao projeto.

  • Criar um novo objeto do cliente.

  • Alterar o nome de contato de um cliente.

  • Excluir um pedido.

  • Enviar essas alterações para o banco de dados Northwind.

Criando uma solução LINQ to SQL

Nesta primeira tarefa, você criará uma solução do Visual Studio com as referências necessárias para compilar e executar um projeto do LINQ to SQL.

Para criar uma solução LINQ to SQL

  1. No menu Arquivo do Visual Studio, clique em Novo Projeto.

  2. No painel Tipos de projeto, na caixa de diálogo Novo Projeto, clique em Visual Basic.

  3. No painel Modelos, clique em Aplicativo de Console.

  4. Na caixa Nome, digite LinqDataManipulationApp.

  5. Clique em OK.

Adicionando referências e diretivas LINQ

Este passo a passo usa assemblies que não podem ser instalados por padrão em seu projeto. Se System.Data.Linq não estiver listado como uma referência no projeto (clique em Mostrar Todos os Arquivos no Gerenciador de Soluções e expanda o nó Referências), adicione-o, conforme explicado nas etapas a seguir.

Para adicionar System.Data.Linq

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência.

  2. Na caixa de diálogo Adicionar Referência, clique em .NET, clique no assembly System.Data.Linq e, em seguida, clique em OK.

    O assembly é adicionado ao projeto.

  3. No editor de códigos, adicione as políticas a seguir acima de Module1:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    
    

Adicionando o arquivo do código Northwind ao projeto

Estas etapas presumem que você tenha usado a ferramenta SQLMetal para gerar um arquivo de código do banco de dados de exemplo Northwind. Para obter mais informações, consulte a seção de pré-requisitos anteriormente neste passo a passo.

Para adicionar o arquivo do código Northwind ao projeto

  1. No menu Projeto , clique em Adicionar Item Existente.

  2. Na caixa de diálogo Adicionar Item Existente, navegue até c:\linqtest2\northwind.vb e clique em Adicionar.

    O arquivo northwind.vb é adicionado ao projeto.

Configurando a conexão de banco de dados

Primeiro, teste sua conexão com o banco de dados. Observe especialmente se o nome do banco de dados, Northwnd, não tem nenhum caractere i. Se você gerar erros nas próximas etapas, revise o arquivo northwind.vb para determinar como a classe parcial do Northwind é soletrada.

Para configurar e testar a conexão com o banco de dados

  1. Digite ou cole o seguinte código em Sub Main:

    ' Use a connection string, but connect to
    '     the temporary copy of the database.
    Dim db As New Northwnd _
        ("C:\linqtest2\northwnd.mdf")
    
    ' Keep the console window open after activity stops.
    Console.ReadLine()
    
  2. Pressione F5 para testar o aplicativo neste ponto.

    Uma janela do console é aberta.

    Feche o aplicativo pressionando Enter na janela de Console, ou clicando em Parar Depuração no menu Depurar do Visual Studio.

Criando uma nova entidade

Criar uma nova entidade é simples. Você pode criar objetos (como Customer) usando a palavra-chave New.

Nessa seção e nas seguintes, você está fazendo alterações somente no cache local. Nenhuma alteração será enviada para o banco de dados até que você chame SubmitChanges no final dessa explicação passo a passo.

Para adicionar um novo objeto de entidade de cliente

  1. Crie um novo Customer adicionando o seguinte código antes de Console.ReadLine em Sub Main:

    ' Create the new Customer object.
    Dim newCust As New Customer()
    newCust.CompanyName = "AdventureWorks Cafe"
    newCust.CustomerID = "A3VCA"
    
    ' Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust)
    
    Console.WriteLine("Customers matching CA before insert:")
    
    Dim custQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In custQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  2. Pressione F5 para depurar a solução.

    Os resultados mostrados na janela do console são:

    Customers matching CA before insert:

    Customer ID: CACTU

    Customer ID: RICAR

    Observe que a nova linha não aparece nos resultados. Os novos dados ainda não foram enviados para o banco de dados.

  3. Pressione Enter na janela de Console para parar a depuração.

Atualizar uma entidade

Nas etapas a seguir, você recuperará um objeto Customer e alterará uma de suas propriedades.

Para alterar o nome de um cliente

  • Adicione o seguinte código acima de Console.ReadLine():

    Dim existingCust = _
        (From cust In db.Customers _
         Where cust.CustomerID = "ALFKI" _
         Select cust).First()
    
    ' Change the contact name of the customer.
    existingCust.ContactName = "New Contact"
    

Excluindo uma entidade

Usando o mesmo objeto de cliente, você poderá excluir o primeiro pedido.

O código a seguir demonstra como separar relações entre linhas, e como excluir uma linha do banco de dados.

Para excluir uma linha

  • Adicione o seguinte código bem acima de Console.ReadLine():

    ' Access the first element in the Orders collection.
    Dim ord0 As Order = existingCust.Orders(0)
    
    ' Access the first element in the OrderDetails collection.
    Dim detail0 As OrderDetail = ord0.OrderDetails(0)
    
    ' Display the order to be deleted.
    Console.WriteLine _
        (vbCrLf & "The Order Detail to be deleted is: OrderID = " _
        & detail0.OrderID)
    
    ' Mark the Order Detail row for deletion from the database.
    db.OrderDetails.DeleteOnSubmit(detail0)
    

Enviando alterações para o banco de dados

A etapa final necessária para criar, atualizar e excluir objetos é realmente enviar as alterações para o banco de dados. Sem esta etapa, suas alterações serão somente locais e não aparecerão nos resultados da consulta.

Para enviar alterações para o banco de dados

  1. Insira o seguinte código bem acima de Console.ReadLine:

    db.SubmitChanges()
    
  2. Insira o código a seguir (após SubmitChanges) para mostrar os efeitos de antes e depois de enviar as alterações:

    Console.WriteLine(vbCrLf & "Customers matching CA after update:")
    Dim finalQuery = _
        From cust In db.Customers _
        Where cust.CustomerID.Contains("CA") _
        Select cust
    
    For Each cust In finalQuery
        Console.WriteLine("Customer ID: " & cust.CustomerID)
    Next
    
  3. Pressione F5 para depurar a solução.

    A janela do console aparece da seguinte maneira:

    Customers matching CA before update:  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
    The Order Detail to be deleted is: OrderID = 10643  
    
    Customers matching CA after update:  
    Customer ID: A3VCA  
    Customer ID: CACTU  
    Customer ID: RICAR  
    
  4. Pressione Enter na janela de Console para parar a depuração.

Observação

Depois de você ter adicionado o novo cliente enviando as alterações, você não poderá executar esta solução novamente desta forma, porque não poderá adicionar o mesmo cliente novamente. Para executar novamente a solução, altere o valor da identificação do cliente a ser adicionado.

Confira também