Tutorial: Modelo de objetos simple y consultas (Visual Basic)Walkthrough: Simple Object Model and Query (Visual Basic)

Este tutorial proporciona un escenario completo de LINQ to SQLLINQ to SQL básico, con las mínimas dificultades.This walkthrough provides a fundamental end-to-end LINQ to SQLLINQ to SQL scenario with minimal complexities. Creará una clase de entidad que modela la tabla Customers de la base de datos de ejemplo Northwind.You will create an entity class that models the Customers table in the sample Northwind database. Después creará una consulta simple para enumerar los clientes que se encuentran en Londres.You will then create a simple query to list customers who are located in London.

Este tutorial está orientado a código por diseño, para que sea más sencillo mostrar los conceptos de LINQ to SQLLINQ to SQL.This walkthrough is code-oriented by design to help show LINQ to SQLLINQ to SQL concepts. Normalmente, para crear un modelo de objetos utilizaría el Object Relational DesignerObject Relational Designer.Normally speaking, you would use the Object Relational DesignerObject Relational Designer to create your object model.

Nota

Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos.The Visual Studio edition that you have and the settings that you use determine these elements. Para obtener más información, vea Personalizar el IDE.For more information, see Personalizing the IDE.

Este tutorial se escribió con la configuración de desarrollo de Visual Basic.This walkthrough was written by using Visual Basic Development Settings.

Requisitos previosPrerequisites

  • Este tutorial utiliza una carpeta dedicada ("c:\linqtest") que contiene los archivos.This walkthrough uses a dedicated folder ("c:\linqtest") to hold files. Cree esta carpeta antes de empezar el tutorial.Create this folder before you begin the walkthrough.

  • Este tutorial requiere la base de datos de ejemplo Northwind.This walkthrough requires the Northwind sample database. Si no dispone de esta base de datos en el equipo de desarrollo, puede descargarla del sitio web de descargas de Microsoft.If you do not have this database on your development computer, you can download it from the Microsoft download site. Para obtener instrucciones, consulte descargar bases de datos de ejemplo.For instructions, see Downloading Sample Databases. Después de haber descargado la base de datos, copie el archivo en la carpeta c:\linqtest.After you have downloaded the database, copy the file to the c:\linqtest folder.

Información generalOverview

Este tutorial se compone de seis tareas principales:This walkthrough consists of six main tasks:

  • Crear un LINQ to SQLLINQ to SQL solución en Visual Studio.Creating a LINQ to SQLLINQ to SQL solution in Visual Studio.

  • Asignar una clase a una tabla de base de datos.Mapping a class to a database table.

  • Designar propiedades en la clase para representar las columnas de base de datos.Designating properties on the class to represent database columns.

  • Especificar la conexión a la base de datos Northwind.Specifying the connection to the Northwind database.

  • Crear una consulta simple para ejecutarla en la base de datos.Creating a simple query to run against the database.

  • Ejecutar la consulta y observar los resultados.Executing the query and observing the results.

Crear una solución LINQ to SQLCreating a LINQ to SQL Solution

En esta primera tarea, se creará una solución de Visual Studio que contiene las referencias necesarias para compilar y ejecutar un LINQ to SQLLINQ to SQL proyecto.In this first task, you create a Visual Studio solution that contains the necessary references to build and run a LINQ to SQLLINQ to SQL project.

Para crear una solución LINQ to SQLTo create a LINQ to SQL solution

  1. En el menú Archivo, haga clic en Nuevo proyecto.On the File menu, click New Project.

  2. En el tipos de proyecto panel de la nuevo proyecto cuadro de diálogo, haga clic en Visual Basic.In the Project types pane of the New Project dialog box, click Visual Basic.

  3. En el panel Plantillas, haga clic en Aplicación de consola.In the Templates pane, click Console Application.

  4. En el nombre , escriba LinqConsoleApp.In the Name box, type LinqConsoleApp.

  5. Haga clic en Aceptar.Click OK.

Agregar referencias y directivas LINQAdding LINQ References and Directives

En este tutorial se usan ensamblados que podrían no estar instalados en el proyecto de forma predeterminada.This walkthrough uses assemblies that might not be installed by default in your project. Si System.Data.Linq no aparece como una referencia en el proyecto (haga clic en mostrar todos los archivos en el Explorador de soluciones y expanda el referencias nodo), agréguelo, como se explica en los pasos siguientes.If System.Data.Linq is not listed as a reference in your project (click Show All Files in Solution Explorer and expand the References node), add it, as explained in the following steps.

Para agregar System.Data.LinqTo add System.Data.Linq

  1. En el Explorador de soluciones, haga clic en referenciasy, a continuación, haga clic en Agregar referencia.In Solution Explorer, right-click References, and then click Add Reference.

  2. En el Agregar referencia cuadro de diálogo, haga clic en .NET, haga clic en el ensamblado System.Data.Linq y, a continuación, haga clic en Aceptar.In the Add Reference dialog box, click .NET, click the System.Data.Linq assembly, and then click OK.

    El ensamblado se agrega al proyecto.The assembly is added to the project.

  3. También en el Agregar referencia cuadro de diálogo, haga clic en .NET, desplácese hasta System.Windows.Forms y, a continuación, haga clic en Aceptar.Also in the Add Reference dialog box, click .NET, scroll to and click System.Windows.Forms, and then click OK.

    Este ensamblado, que permite usar el cuadro de mensaje en el tutorial, se agrega al proyecto.This assembly, which supports the message box in the walkthrough, is added to the project.

  4. Agregue las directivas siguientes antes de Module1:Add the following directives above Module1:

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

Asignar una clase a una tabla de base de datosMapping a Class to a Database Table

En este paso, creará una clase y la asignará a una tabla de base de datos.In this step, you create a class and map it to a database table. Esta clase se denomina un clase de entidad.Such a class is termed an entity class. Observe que la asignación se realiza con solo agregar el atributo TableAttribute.Note that the mapping is accomplished by just adding the TableAttribute attribute. La propiedad Name especifica el nombre de la tabla de la base de datos.The Name property specifies the name of the table in the database.

Para crear una clase de entidad y asignarla a una tabla de base de datosTo create an entity class and map it to a database table

  • Escriba o pegue el código siguiente en Module1.vb, justo encima de Sub Main:Type or paste the following code into Module1.vb immediately above Sub Main:

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

Designar propiedades en la clase para representar columnas de base de datosDesignating Properties on the Class to Represent Database Columns

En este paso, realizará varias tareas.In this step, you accomplish several tasks.

  • Utilizará el atributo ColumnAttribute para designar las propiedades CustomerID y City en la clase de entidad como representativas de las columnas de la tabla de base de datos.You use the ColumnAttribute attribute to designate CustomerID and City properties on the entity class as representing columns in the database table.

  • Designará la propiedad CustomerID como representativa de una columna de clave principal en la base de datos.You designate the CustomerID property as representing a primary key column in the database.

  • Designará los campos _CustomerID y _City para el almacenamiento privado.You designate _CustomerID and _City fields for private storage. Después, LINQ to SQLLINQ to SQL podrá almacenar y recuperar los valores directamente, en lugar de utilizar descriptores de acceso públicos que podrían incluir lógica empresarial.LINQ to SQLLINQ to SQL can then store and retrieve values directly, instead of using public accessors that might include business logic.

Para representar las características de dos columnas de base de datosTo represent characteristics of two database columns

  • Escriba o pegue el código siguiente en Module1.vb, justo delante de End Class:Type or paste the following code into Module1.vb just before 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
    

Especificar la conexión a la base de datos NorthwindSpecifying the Connection to the Northwind Database

En este paso, utilizará un objeto DataContext para establecer una conexión entre sus estructuras de datos basadas en código y la propia base de datos.In this step you use a DataContext object to establish a connection between your code-based data structures and the database itself. DataContext es el canal principal a través del cual se recuperan los objetos de la base de datos y se envían los cambios.The DataContext is the main channel through which you retrieve objects from the database and submit changes.

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.You also declare a Table(Of Customer) to act as the logical, typed table for your queries against the Customers table in the database. Creará y ejecutar estas consultas en pasos posteriores.You will create and execute these queries in later steps.

Para especificar la conexión a la base de datosTo specify the database connection

  • Escriba o pegue el código siguiente en el método Sub Main.Type or paste the following code into the Sub Main method.

    Tenga en cuenta que se asume que el archivo northwnd.mdf está en la carpeta linqtest.Note that the northwnd.mdf file is assumed to be in the linqtest folder. Para obtener más información, vea la sección Requisitos previos, anteriormente en este tutorial.For more information, see the Prerequisites section earlier in this walkthrough.

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

Crear una consulta simpleCreating a Simple Query

En este paso, creará una consulta para buscar los clientes de la tabla de base de datos Customers que se encuentran en Londres.In this step, you create a query to find which customers in the database Customers table are located in London. En este paso, el código de la consulta simplemente la describe.The query code in this step just describes the query. No la ejecuta.It does not execute it. Este enfoque se conoce como ejecución diferida.This approach is known as deferred execution. Para obtener más información, vea Introduction to LINQ queries (C#) [Introducción a las consultas LINQ (C#)].For more information, see Introduction to LINQ Queries (C#).

También generará un resultado de registro para mostrar los comandos SQL que LINQ to SQLLINQ to SQL genera.You will also produce a log output to show the SQL commands that LINQ to SQLLINQ to SQL generates. Esta característica de registro (que utiliza Log) es útil para la depuración, así como para determinar que los comandos que se envían a la base de datos representan la consulta de manera precisa.This logging feature (which uses Log) is helpful in debugging, and in determining that the commands being sent to the database accurately represent your query.

Para crear una consulta simpleTo create a simple query

  • Escriba o pegue el código siguiente en el método Sub Main después de la declaración Table(Of Customer):Type or paste the following code into the Sub Main method after the Table(Of Customer) declaration:

    ' 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
    

Ejecutar la consultaExecuting the Query

En este paso es donde realmente ejecutará la consulta.In this step, you actually execute the query. Las expresiones de consulta creadas en pasos anteriores no se evalúan hasta que no se necesitan los resultados.The query expressions you created in the previous steps are not evaluated until the results are needed. Al comenzar la iteración For Each, se ejecuta un comando SQL en la base de datos y se materializan los objetos.When you begin the For Each iteration, a SQL command is executed against the database and objects are materialized.

Para ejecutar la consultaTo execute the query

  1. Escriba o pegue el código siguiente al final del método Sub Main (después de la descripción de la consulta):Type or paste the following code at the end of the Sub Main method (after the query description):

    ' 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.Press F5 to debug the application.

    Nota

    Si la aplicación genera un error en tiempo de ejecución, vea la sección de solución de problemas de aprender con tutoriales.If your application generates a run-time error, see the Troubleshooting section of Learning by Walkthroughs.

    El cuadro de mensaje muestra una lista de seis clientes.The message box displays a list of six customers. La ventana Consola muestra el código SQL generado.The Console window displays the generated SQL code.

  3. Haga clic en Aceptar para descartar el cuadro de mensaje.Click OK to dismiss the message box.

    La aplicación se cierra.The application closes.

  4. En el archivo menú, haga clic en guardar todo.On the File menu, click Save All.

    Necesitará esta aplicación si va a continuar con el tutorial siguiente.You will need this application if you continue with the next walkthrough.

Pasos siguientesNext Steps

El Tutorial: realizar consultas en varias relaciones (Visual Basic) tema continúa donde finaliza este tutorial.The Walkthrough: Querying Across Relationships (Visual Basic) topic continues where this walkthrough ends. El tutorial realizar consultas en varias relaciones muestra cómo LINQ to SQLLINQ to SQL puede realizar consultas entre tablas, de forma similar a combinaciones en una base de datos relacional.The Querying Across Relationships walkthrough demonstrates how LINQ to SQLLINQ to SQL can query across tables, similar to joins in a relational database.

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.If you want to do the Querying Across Relationships walkthrough, make sure to save the solution for the walkthrough you have just completed, which is a prerequisite.

Vea tambiénSee Also

Aprendizaje con tutorialesLearning by Walkthroughs