Passo a passo: Consulta e modelo de objeto simples (Visual Basic)
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 Basic.
Pré-requisitos
Este passo a passo usa uma pasta dedicada ("c:\linqtest") 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:\linqtest.
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
No menu Arquivo, clique em Novo Projeto.
No painel Tipos de projeto da caixa de diálogo Novo Projeto, clique em Visual Basic.
No painel Modelos, clique em Aplicativo de Console.
Na caixa Nome, digite LinqConsoleApp.
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 (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
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.
Também na caixa de diálogo Adicionar Referência, clique em .NET, role até System.Windows.Forms e clique em OK.
Esse assembly, que suporta a caixa de mensagem no passo a passo, é adicionado ao projeto.
Aditar acima as seguintes diretivas
Module1
:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
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 Module1.vb imediatamente acima
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
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
eCity
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 seguinte código em Module1.vb imediatamente antes
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 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(Of 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
Sub Main
método.Observe que o
northwnd.mdf
arquivo é assumido para estar na pasta linqtest. Para obter mais informações, consulte a seção 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 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 seguinte código no
Sub Main
método após aTable(Of Customer)
declaração:' 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 criadas nas etapas anteriores não são avaliadas até que os resultados sejam necessários. Quando você inicia a For Each
iteração, um comando SQL é executado no banco de dados e os objetos são materializados.
Para executar a consulta
Digite ou cole o seguinte código no final do
Sub Main
método (após a descrição da 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)
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.
A caixa de mensagem exibe uma lista de seis clientes. A janela Console exibe o código SQL gerado.
Clique em OK para descartar a caixa de mensagem.
O aplicativo é fechado.
No menu File (Ficheiro), clique em Save All (Guardar Tudo).
Você precisará deste aplicativo se continuar com o próximo passo a passo.
Passos Seguintes
O tópico Passo a passo: Consultando entre relacionamentos (Visual Basic) continua onde esta explicação passo a passo termina. O passo a passo Consultando 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 Consultando entre relacionamentos, certifique-se de salvar a solução para o passo a passo que você acabou de concluir, que é um pré-requisito.