Partilhar via


Passo a passo: Consulta e modelo de objeto simples (C#)

Este passo a passo fornece um cenário LINQ to SQL fundamental de ponta a ponta com complexidades mínimas. Você criará uma classe de entidade que modela a tabela Customers no banco de dados Northwind de exemplo. Em seguida, você criará uma consulta simples para listar os clientes que estão localizados em Londres.

Este passo a passo é orientado a código por design para ajudar a mostrar conceitos de LINQ to SQL. Normalmente, você usaria o Object Relational Designer para criar seu modelo de objeto.

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 usa uma pasta dedicada ("c:\linqtest5") para armazenar arquivos. Crie esta pasta antes de começar o passo a passo.

  • Este passo a passo requer 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 para a pasta c:\linqtest5.

Descrição geral

Este passo a passo consiste em seis tarefas principais:

  • Criação de uma solução LINQ to SQL no Visual Studio.

  • Mapeando uma classe para uma tabela de banco de dados.

  • Designando propriedades na classe para representar colunas de banco de dados.

  • Especificando a conexão com o banco de dados Northwind.

  • Criação de uma consulta simples para ser executada no banco de dados.

  • Executar a consulta e observar os resultados.

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 da caixa de diálogo Novo projeto, clique em Visual C#.

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

  4. Na caixa Nome, digite LinqConsoleApp.

  5. Na caixa Local, verifique onde você deseja armazenar seus arquivos de projeto.

  6. 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 (expanda o nó Referências no Gerenciador de Soluções), 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 .

    A montagem é adicionada ao projeto.

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

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

Mapeando uma classe para uma tabela de banco de dados

Nesta etapa, você cria uma classe e a mapeia para uma tabela de banco de dados. Tal classe é denominada uma classe de entidade. Observe que o mapeamento é realizado apenas adicionando o TableAttribute atributo. A Name propriedade especifica o nome da tabela no banco de dados.

Para criar uma classe de entidade e mapeá-la para uma tabela de banco de dados

  • Digite ou cole o seguinte código em Program.cs imediatamente acima da declaração de Program classe:

    [Table(Name = "Customers")]
    public class Customer
    {
    }
    

Designando propriedades na classe para representar colunas de banco de dados

Nesta etapa, você realiza várias tarefas.

  • Use o ColumnAttribute atributo para designar CustomerID e City propriedades na classe de entidade como representando colunas na tabela do banco de dados.

  • Você designa a CustomerID propriedade como representando uma coluna de chave primária no banco de dados.

  • Você designa _CustomerID e _City campos para armazenamento privado. O LINQ to SQL pode então armazenar e recuperar valores diretamente, em vez de usar acessadores públicos que podem incluir lógica de negócios.

Para representar características de duas colunas de banco de dados

  • Digite ou cole o código a seguir em Program.cs dentro das chaves da Customer classe.

    private string _CustomerID;
    [Column(IsPrimaryKey=true, Storage="_CustomerID")]
    public string CustomerID
    {
        get
        {
            return this._CustomerID;
        }
        set
        {
            this._CustomerID = value;
        }
    }
    
    private string _City;
    [Column(Storage="_City")]
    public string City
    {
        get
        {
            return this._City;
        }
        set
        {
            this._City=value;
        }
    }
    

Especificando a conexão com o banco de dados Northwind

Nesta etapa, você usa um DataContext objeto para estabelecer uma conexão entre suas estruturas de dados baseadas em código e o próprio banco de dados. O DataContext é o canal principal através do qual você recupera objetos do banco de dados e envia alterações.

Você também declara a Table<Customer> para agir como a tabela lógica digitada para suas consultas em relação à tabela Customers no banco de dados. Você criará e executará essas consultas em etapas posteriores.

Para especificar a conexão do banco de dados

  • Digite ou cole o código a seguir no Main método.

    Observe que o northwnd.mdf arquivo é assumido para estar na pasta linqtest5. Para obter mais informações, consulte a seção Pré-requisitos anteriormente neste passo a passo.

    // Use a connection string.
    DataContext db = new DataContext
        (@"c:\linqtest5\northwnd.mdf");
    
    // Get a typed table to run queries.
    Table<Customer> Customers = db.GetTable<Customer>();
    

Criando uma consulta simples

Nesta etapa, você cria uma consulta para localizar quais clientes na tabela Clientes do banco de dados estão localizados em Londres. O código de consulta nesta etapa apenas descreve a consulta. Não o executa. Essa abordagem é conhecida como execução diferida. Para obter mais informações, consulte Introdução às consultas LINQ (C#).

Você também produzirá uma saída de log para mostrar os comandos SQL gerados pelo LINQ to SQL. Esse recurso de log (que usa Log) é útil na depuração e na determinação de que os comandos que estão sendo enviados para o banco de dados representam com precisão sua consulta.

Para criar uma consulta simples

  • Digite ou cole o código a seguir no Main método após a Table<Customer> declaração.

    // Attach the log to show generated SQL.
    db.Log = Console.Out;
    
    // Query for customers in London.
    IQueryable<Customer> custQuery =
        from cust in Customers
        where cust.City == "London"
        select cust;
    

Executando a consulta

Nesta etapa, você realmente executa a consulta. As expressões de consulta criadas nas etapas anteriores não são avaliadas até que os resultados sejam necessários. Quando você inicia a foreach iteração, um comando SQL é executado no banco de dados e os objetos são materializados.

Para executar a consulta

  1. Digite ou cole o código a seguir no final do método (após a Main descrição da consulta).

    foreach (Customer cust in custQuery)
    {
        Console.WriteLine("ID={0}, City={1}", cust.CustomerID,
            cust.City);
    }
    
    // Prevent console window from closing.
    Console.ReadLine();
    
  2. Prima F5 para depurar a aplicação.

    Nota

    Se seu aplicativo gerar um erro em tempo de execução, consulte a seção Solução de problemas de Aprendizagem por passo a passo.

    Os resultados da consulta na janela do console devem aparecer da seguinte maneira:

    ID=AROUT, City=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Pressione Enter na janela do console para fechar o aplicativo.

Passos Seguintes

O tópico Passo a passo: Consultando entre relacionamentos (C#) continua onde este passo a passo termina. O passo a passo Consulta entre relacionamentos demonstra como o LINQ to SQL pode consultar entre tabelas, semelhante a associações em um banco de dados relacional.

Se você quiser fazer o passo a passo Consulta entre relacionamentos, certifique-se de salvar a solução para o passo a passo que você acabou de concluir, que é um pré-requisito.

Consulte também