Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
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 Localização , verifique onde você deseja armazenar os arquivos do projeto.
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
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 clique em OK.
O assembly é adicionado ao projeto.
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
No menu Project, 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 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
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 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
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 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
Insira o seguinte código logo acima
Console.ReadLine
:db.SubmitChanges();
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); }
Pressione F5 para depurar a solução.
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.