Passo a passo: Manipulando dados (C#)
Este passo a passo fornece um cenário LINQ to SQL fundamental de ponta a ponta 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.
Nota
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da 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 não tiver esta base de dados no computador de desenvolvimento, pode transferi-la a partir do site de transferências da Microsoft. Para obter instruções, consulte Download de 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 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).
Descriçã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.
Criação de um novo objeto de cliente.
Modificar o nome de contato de um cliente.
Eliminar uma encomenda.
Submeter estas alterações à base 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
No menu Arquivo do Visual Studio, aponte para Novo e clique em Projeto.
No painel Tipos de projeto na caixa de diálogo Novo Projeto, clique em Visual C#.
No painel Modelos, clique em Aplicativo de Console.
Na caixa Nome, digite LinqDataManipulationApp.
Na caixa Local, verifique onde você deseja armazenar seus arquivos de projeto.
Clique em OK.
Adicionando referências e diretivas LINQ
Este passo a passo usa assemblies 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
No Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência.
Na caixa de diálogo Adicionar referência , clique em .NET , clique no assembly System.Data.Linq e, em seguida, clique em OK .
A montagem é adicionada ao projeto.
Adicione as seguintes diretivas na parte superior da Program.cs:
using System.Data.Linq; using System.Data.Linq.Mapping;
Adicionando o arquivo de código Northwind ao projeto
Estas 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
No menu Projeto, clique em Adicionar Item Existente.
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 do banco de dados
Primeiro, teste sua conexão com o banco de dados. Note especialmente que o banco de dados, Northwnd, não tem caractere i. Se você gerar erros nas próximas etapas, revise o arquivo northwind.cs para determinar como a classe parcial Northwind é escrita.
Para configurar e testar a conexão do banco de dados
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();
Pressione F5 para testar o aplicativo neste ponto.
Uma janela 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 apenas no cache local. Nenhuma alteração é enviada para o banco de dados até que você ligue SubmitChanges para o final desta explicação passo a passo.
Para adicionar um novo objeto de entidade Customer
Crie um novo
Customer
adicionando o seguinte código antesConsole.ReadLine();
noMain
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); }
Pressione F5 para depurar a solução.
Pressione Enter na janela Console para parar 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 esta etapa, as alterações são apenas locais e não aparecerão nos resultados da consulta.
Para enviar alterações ao banco de dados
Insira o seguinte código logo acima
Console.ReadLine
:db.SubmitChanges();
Insira o seguinte código (após
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); }
Pressione F5 para depurar a solução.
Pressione Enter na janela Console para fechar o aplicativo.
Nota
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 o ID do cliente a ser adicionado.