Compartilhar via


Passo a passo: modelo e consulta de objeto simples (Visual Basic)

Este passo a passo fornece um cenário LINQ to SQL de ponta a ponta fundamental com complexidades mínimas. Você criará uma classe de entidade que modela a tabela Customers no banco de dados de exemplo Northwind. Em seguida, 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 os conceitos do LINQ to SQL. Normalmente, é utilizado o Object Relational Designer para criar o modelo de objeto.

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.

Este passo a passo foi escrito usando as Configurações de Desenvolvimento do Visual Basic.

Pré-requisitos

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest") para armazenar arquivos. Crie essa pasta antes de iniciar o passo a passo.

  • Este passo a passo requer 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, consulte Baixar bancos de dados de exemplo. Depois de baixar o banco de dados, copie o arquivo para a pasta c:\linqtest.

Visão geral

Este passo a passo consiste em seis tarefas principais:

  • Criar uma solução do LINQ to SQL no Visual Studio.

  • Mapear uma classe para uma tabela do banco de dados.

  • Designar propriedades na classe para representar colunas do banco de dados.

  • Especificar a conexão ao banco de dados Northwind.

  • Criar uma consulta simples para execução no banco de dados.

  • Executar a consulta e observar os resultados.

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 menu Arquivo, clique em Novo Projeto.

  2. No painel Tipos de projeto da caixa de diálogo Novo Projeto, clique em Visual Basic.

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

  4. Na caixa Nome, digite LinqConsoleApp.

  5. 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 no projeto (clique em Mostrar Todos os Arquivos no Gerenciador de Soluções e expanda o nó Referências), 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.

    O assembly é adicionado ao projeto.

  3. Na caixa de diálogo Adicionar Referência, clique em .NET, role até System.Windows.Forms, clique nele e, em seguida, clique em OK.

    Este assembly, que oferece suporte à caixa de mensagem no passo a passo, é adicionado ao projeto.

  4. Adicione as seguintes diretivas acima de Module1:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Windows.Forms
    
    

Mapeando uma classe para uma tabela do banco de dados

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

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

  • Digite ou cole o seguinte código no Module1.vb imediatamente acima de Sub Main:

    <Table(Name:="Customers")> _
    Public Class Customer
    End Class
    

Designando propriedades na classe para representar colunas do banco de dados

Nesta etapa, você realiza várias tarefas.

  • Você usa o atributo ColumnAttribute para designar as propriedades CustomerID e City na classe de entidade como representação de colunas na tabela do banco de dados.

  • Você designa a propriedade CustomerID como a representação de uma coluna de chave primária no banco de dados.

  • Você designa os campos _CustomerID e _City para armazenamento particular. O LINQ to SQL pode 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 do banco de dados

  • Digite ou cole o seguinte código no Module1.vb imediatamente antes de End Class:

    Private _CustomerID As String
    <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _
    Public Property CustomerID() As String
        Get
            Return Me._CustomerID
        End Get
        Set(ByVal value As String)
            Me._CustomerID = value
        End Set
    End Property
    
    Private _City As String
    <Column(Storage:="_City")> _
    Public Property City() As String
        Get
            Return Me._City
        End Get
        Set(ByVal value As String)
            Me._City = value
        End Set
    End Property
    

Especificando a conexão ao banco de dados Northwind

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

Você também declara um Table(Of Customer) para atuar como a tabela lógica tipada para suas consultas na tabela Customers do 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 método Sub Main:

    Observe que supõe-se que o arquivo northwnd.mdf está na pasta linqtest. Para obter mais informações, consulte a seção de pré-requisitos anteriormente neste passo a passo.

    ' Use a connection string.
    Dim db As New DataContext _
        ("c:\linqtest\northwnd.mdf")
    
    ' Get a typed table to run queries.
    Dim Customers As Table(Of Customer) = _
        db.GetTable(Of Customer)()
    

Criando uma consulta simples

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

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

Para criar uma consulta simples

  • Digite ou cole o código a seguir no método Sub Main depois da declaração Table(Of Customer):

    ' Attach the log to show generated SQL in a console window.
    db.Log = Console.Out
    
    ' Query for customers in London.
    Dim 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 que você criou nas etapas anteriores não são avaliadas até que os resultados sejam necessários. Quando você começa a iteração For Each, um comando SQL é executado no banco de dados e os objetos são materializados.

Para executar a consulta.

  1. Digite ou cole o seguinte código ao final do método Sub Main (após a descrição de consulta):

    ' Format the message box.
    Dim msg As String = "", title As String = "London customers:", _
        response As MsgBoxResult, style As MsgBoxStyle = _
        MsgBoxStyle.Information
    
    ' Execute the query.
    For Each custObj In custQuery
        msg &= String.Format(custObj.CustomerID & vbCrLf)
    Next
    
    ' Display the results.
    response = MsgBox(msg, style, title)
    
  2. Pressione F5 para depurar o aplicativo.

    Observação

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

    A caixa de mensagem exibe uma lista de seis clientes. A janela Console exibe o código SQL gerado.

  3. Clique em OK para descartar a caixa de mensagem.

    O aplicativo é fechado.

  4. No menu Arquivo , clique em Salvar Tudo.

    Você precisará deste aplicativo para continuar com o próximo passo a passo.

Próximas etapas

O tópico Passo a passo: Consultando através de relações (Visual Basic) continua onde este passo a passo termina. O passo a passo Consultando através de relações demonstra como o LINQ to SQL pode consultar entre tabelas, semelhante a junções em um banco de dados relacional.

Se você desejar realizar o passo a passo Consultando através de relações, salve a solução do passo a passo que você acabou de concluir, que é um pré-requisito.

Confira também