Passo a passo: Manipular dados (C#)

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.

Esse passo a passo foi escrito usando as configurações de desenvolvimento do Visual C#.

Pré-requisitos

Este passo a passo requer o seguinte:

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest6") 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:\linqtest6.

  • Um arquivo de código C# gerado no 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:\linqtest6\northwind.cs" /language:csharp "C:\linqtest6\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 Visual Studio, no menu Arquivo, aponte para Novo e, em seguida, clique em Projeto.

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

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

  4. Na caixa Nome, digite LinqDataManipulationApp.

  5. Na caixa Localização, verifique onde você quer armazenar os arquivos de projeto.

  6. 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 em seu projeto, adicione-o, conforme explicado nas seguintes etapas:

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. Adicione as seguintes diretivas na parte superior de Program.cs:

    using System.Data.Linq;
    using 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:\linqtest6\northwind.cs e clique em Adicionar.

    O arquivo northwind.cs é 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 banco de dados, Northwnd, não tem nenhum caractere i. Se você gerar erros nas próximas etapas, revise o arquivo northwind.cs 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 código a seguir no método Main na classe Program:

    // Use the following connection string.
    Northwnd db = new Northwnd(@"c:\linqtest6\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.

    Você pode fechar 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(); no método Main:

    // Create the new Customer object.
    Customer newCust = new Customer();
    newCust.CompanyName = "AdventureWorks Cafe";
    newCust.CustomerID = "ADVCA";
    
    // Add the customer to the Customers table.
    db.Customers.InsertOnSubmit(newCust);
    
    Console.WriteLine("\nCustomers matching CA before insert");
    
    foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  2. Pressione F5 para depurar a solução.

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

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();:

    // Query for specific customer.
    // First() returns one object rather than a collection.
    var existingCust =
        (from c in db.Customers
         where c.CustomerID == "ALFKI"
         select c)
        .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. Adicione o seguinte código antes de Console.ReadLine para ver como os objetos podem ser excluídos:

Para excluir uma linha

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

    // Access the first element in the Orders collection.
    Order ord0 = existingCust.Orders[0];
    
    // Access the first element in the OrderDetails collection.
    OrderDetail detail0 = ord0.OrderDetails[0];
    
    // Display the order to be deleted.
    Console.WriteLine
        ("The Order Detail to be deleted is: OrderID = {0}, ProductID = {1}",
        detail0.OrderID, detail0.ProductID);
    
    // 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("\nCustomers matching CA after update");
    foreach (var c in db.Customers.Where(cust =>
        cust.CustomerID.Contains("CA")))
    {
        Console.WriteLine("{0}, {1}, {2}",
            c.CustomerID, c.CompanyName, c.Orders.Count);
    }
    
  3. Pressione F5 para depurar a solução.

  4. Pressione Enter na janela Console para fechar o aplicativo.

Observação

Depois de adicionar o novo cliente enviando as alterações, você não poderá executar esta solução novamente como está. Para executar novamente a solução, altere o nome do cliente e a ID do cliente a ser adicionada.

Confira também