Compartir a través de


Tutorial: Modelo de objetos simple y consulta (Visual Basic)

En este tutorial se proporciona un escenario fundamental de LINQ to SQL de un extremo a otro con complejidades mínimas. Creará una clase de entidad que modele la tabla Customers en la base de datos Northwind de ejemplo. A continuación, creará una consulta sencilla para enumerar los clientes que se encuentran en Londres.

Este tutorial está orientado a código por diseño para ayudar a mostrar los conceptos de LINQ to SQL. Normalmente, usaría el Diseñador relacional de objetos para crear el modelo de objetos.

Nota:

El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para obtener más información, consulte Personalizando el IDE.

Este tutorial se escribió mediante los ajustes de desarrollo de Visual Basic.

Prerrequisitos

  • En este tutorial se usa una carpeta dedicada ("c:\linqtest") para almacenar archivos. Cree esta carpeta antes de comenzar el tutorial.

  • Este tutorial requiere la base de datos de ejemplo Northwind. Si no tiene esta base de datos en el equipo de desarrollo, puede descargarla desde el sitio de descarga de Microsoft. Para obtener instrucciones, consulte Descargar bases de datos de ejemplo. Después de descargar la base de datos, copie el archivo en la carpeta c:\linqtest.

Información general

Este tutorial consta de seis tareas principales:

  • Creación de una solución LINQ to SQL en Visual Studio.

  • Asignación de una clase a una tabla de base de datos.

  • Designando propiedades en la clase para representar columnas de base de datos.

  • Especificación de la conexión a la base de datos Northwind.

  • Crear una consulta sencilla para ejecutar en la base de datos.

  • Ejecutar la consulta y observar los resultados.

Creación de una solución LINQ to SQL

En esta primera tarea, creará una solución de Visual Studio que contiene las referencias necesarias para compilar y ejecutar un proyecto LINQ to SQL.

Para crear una solución LINQ to SQL

  1. En el menú Archivo , haga clic en Nuevo proyecto.

  2. En el panel Tipos de proyecto del cuadro de diálogo Nuevo proyecto , haga clic en Visual Basic.

  3. En el panel Plantillas, haga clic en Aplicación de consola.

  4. En el cuadro Nombre , escriba LinqConsoleApp.

  5. Haz clic en Aceptar.

Agregando referencias y directivas de LINQ

En este tutorial se usan ensamblados que podrían no instalarse de forma predeterminada en el proyecto. Si System.Data.Linq no aparece como referencia en el proyecto (haga clic en Mostrar todos los archivos en el Explorador de soluciones y expanda el nodo Referencias ), agréguelo, como se explica en los pasos siguientes.

Para agregar System.Data.Linq

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Referencias y, a continuación, haga clic en Agregar referencia.

  2. En el cuadro de diálogo Agregar referencia , haga clic en .NET, haga clic en el ensamblado System.Data.Linq y, a continuación, haga clic en Aceptar.

    El ensamblado se agrega al proyecto.

  3. También en el cuadro de diálogo Agregar referencia , haga clic en .NET, desplácese hasta y haga clic en System.Windows.Forms y, a continuación, haga clic en Aceptar.

    Este ensamblado, que admite el cuadro de mensaje en el tutorial, se agrega al proyecto.

  4. Agregue las siguientes directivas encima de Module1.

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

Asignación de una clase a una tabla de base de datos

En este paso, creará una clase y la asignará a una tabla de base de datos. Dicha clase se denomina una clase de entidad. Observe que la asignación se realiza con solo agregar el atributo TableAttribute. La Name propiedad especifica el nombre de la tabla de la base de datos.

Para crear una clase de entidad y asignarla a una tabla de base de datos

  • Escriba o pegue el código siguiente en Module1.vb directamente encima de Sub Main.

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

Diseñar propiedades en la clase para representar columnas de base de datos

En este paso, se realizan varias tareas.

  • Se usa el atributo ColumnAttribute para designar las propiedades CustomerID y City en la clase de entidad, representando columnas en la tabla de la base de datos.

  • Designe la CustomerID propiedad como que representa una columna de clave principal en la base de datos.

  • Usted designa los campos _CustomerID y _City para el almacenamiento privado. LINQ to SQL puede almacenar y recuperar valores directamente, en lugar de usar descriptores de acceso públicos que pueden incluir lógica de negocios.

Para representar características de dos columnas de base de datos

  • Escriba o pegue el código siguiente en Module1.vb justo 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
    

Especificación de la conexión a la base de datos Northwind

En este paso se usa un DataContext objeto para establecer una conexión entre las estructuras de datos basadas en código y la propia base de datos. DataContext es el canal principal a través del cual se recuperan objetos de la base de datos y se envían los cambios.

También declarará Table(Of Customer) para que actúe como la tabla lógica con tipo para las consultas que realizará en la tabla Customers de la base de datos. Creará y ejecutará estas consultas en pasos posteriores.

Para especificar la conexión de base de datos

  • Escriba o pegue el código siguiente en el Sub Main método .

    Tenga en cuenta que se supone que el northwnd.mdf archivo está en la carpeta linqtest. Para obtener más información, consulte la sección Requisitos previos anteriormente en este tutorial.

    ' 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)()
    

Creación de una consulta simple

En este paso, creará una consulta para buscar qué clientes de la tabla Customers de la base de datos se encuentran en Londres. El código de consulta de este paso solo describe la consulta. No lo ejecuta. Este enfoque se conoce como ejecución diferida. Para obtener más información, vea Introducción a las consultas LINQ (C#).

También generará una salida de registro para mostrar los comandos SQL que GENERA LINQ to SQL. Esta característica de registro (que usa Log) resulta útil para la depuración y para determinar que los comandos que se envían a la base de datos representan con precisión la consulta.

Para crear una consulta sencilla

  • Escriba o pegue el código siguiente en el Sub Main método después de la Table(Of Customer) declaración:

    ' 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
    

Ejecución de la consulta

En este paso es donde realmente ejecutará la consulta. Las expresiones de consulta que creó en los pasos anteriores no se evalúan hasta que se necesiten los resultados. Cuando se inicia la For Each iteración, se ejecuta un comando SQL en la base de datos y los objetos se materializan.

Para ejecutar la consulta

  1. Escriba o pegue el código siguiente al final del método (después de la descripción de la Sub Main 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. Presione F5 para depurar la aplicación.

    Nota:

    Si la aplicación genera un error en tiempo de ejecución, consulte la sección Solución de problemas de Aprendizaje por tutoriales.

    El cuadro de mensaje muestra una lista de seis clientes. La ventana Consola muestra el código SQL generado.

  3. Haga clic en Aceptar para descartar el cuadro de mensaje.

    La aplicación se cierra.

  4. En el menú Archivo, haga clic en Guardar todo.

    Necesitará esta aplicación si continúa con el siguiente tutorial.

Pasos siguientes

El tema Tutorial: Realizar consultas en varias relaciones (Visual Basic) continúa donde finaliza este tutorial. En el tutorial Consulta entre relaciones se muestra cómo LINQ to SQL puede consultar entre tablas, de forma similar a las combinaciones de una base de datos relacional.

Si desea seguir los pasos del tutorial Realizar consultas en varias relaciones, no olvide guardar la solución del tutorial que acaba de completar, que es un requisito previo.

Consulte también