Compartilhar via


Passo a passo: manipulando dados (C#)

Este passo a passo fornece um cenário básico de LINQ de ponta a ponta para SQL para adicionar, modificar e excluir dados em um banco de dados. Você usará uma cópia do banco de dados Northwind de exemplo para adicionar um cliente, alterar o nome de um cliente e excluir um pedido.

Observação

Seu computador pode mostrar nomes ou locais diferentes 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ê tem 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 C#.

Pré-requisitos

Este passo a passo requer o seguinte:

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest6") para armazenar arquivos. Crie esta pasta antes de começar o passo a passo.

  • O banco de dados de exemplo Northwind.

    Se você não tiver esse banco de dados em seu computador de desenvolvimento, poderá baixá-lo no site de download da Microsoft. Para obter instruções, consulte 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 a partir do banco de dados Northwind.

    Você pode gerar esse arquivo usando o Designer Relacional de Objeto 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.

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

  • Criando um novo objeto de cliente.

  • Modificando o nome de contato de um cliente.

  • Excluir um pedido.

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

Criando uma solução LINQ to SQL

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

Para criar uma solução LINQ to SQL

  1. No menu Arquivo do Visual Studio, aponte para Novo e 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ê deseja armazenar os arquivos do projeto.

  6. Clique em OK.

Adicionando referências e diretivas LINQ

Este passo a passo usa conjuntos que podem não 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 clique em OK.

    O assembly é adicionado ao projeto.

  3. Adicione as seguintes diretivas na parte superior do Program.cs:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

Adicionando o arquivo de código Northwind ao projeto

Essas etapas pressupõem 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 Pré-requisitos anteriormente neste passo a passo.

Para adicionar o arquivo de código northwind ao projeto

  1. No menu Project, 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 que 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 de banco de dados

  1. Digite ou cole o seguinte código no Main método 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 momento.

    Uma janela do Console é aberta.

    Você pode fechar o aplicativo pressionando Enter na janela 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 new palavra-chave.

Nesta e nas seções a seguir, você está fazendo alterações somente no cache local. Nenhuma alteração é enviada ao banco de dados até que você chame SubmitChanges no final deste passo a passo.

Para adicionar um novo objeto de entidade do cliente

  1. Crie um novo Customer adicionando o seguinte código antes Console.ReadLine(); no Main método:

    // 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 Console para interromper a depuração e continuar o passo a passo.

Atualizando uma entidade

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

Para alterar o nome de um cliente

  • Adicione o seguinte código acima 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ê pode excluir o primeiro pedido.

O código a seguir demonstra como cortar relações entre linhas e como excluir uma linha do banco de dados. Adicione o seguinte código antes Console.ReadLine para ver como os objetos podem ser excluídos:

Para excluir uma linha

  • Adicione o seguinte código logo acima 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 ao 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 essa etapa, suas alterações são apenas locais e não aparecerão nos resultados da consulta.

Para enviar alterações ao banco de dados

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

    db.SubmitChanges();
    
  2. Insira o seguinte código (depois SubmitChanges) para mostrar os efeitos antes e depois do envio das 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 essa solução novamente como está. Para executar a solução novamente, altere o nome do cliente e a ID do cliente a ser adicionada.

Consulte também