Tutorial: Modelo de objetos simple y consultas (Visual Basic) (LINQ to SQL)
Actualización: November 2007
Este tutorial proporciona un escenario completo de LINQ to SQL básico, con las mínimas dificultades. Creará una clase de entidad que modela la tabla Customers de la base de datos de ejemplo Northwind. Después creará una consulta simple para enumerar los clientes que se encuentran en Londres.
Este tutorial está orientado a código por diseño, para que sea más sencillo mostrar los conceptos de LINQ to SQL. Normalmente, para crear un modelo de objetos utilizaría el Diseñador relacional de objetos.
Nota: |
---|
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio. |
Este tutorial se escribió con la configuración de desarrollo de Visual Basic.
Requisitos previos
Este tutorial utiliza una carpeta dedicada ("c:\linqtest") que contiene los archivos. Cree esta carpeta antes de empezar el tutorial.
Este tutorial requiere la base de datos de ejemplo Northwind. Si no dispone de esta base de datos en el equipo de desarrollo, puede descargarla del sitio web de descargas de Microsoft. Para obtener instrucciones, vea Descargar bases de datos de ejemplo (LINQ to SQL). Después de haber descargado la base de datos, copie el archivo en la carpeta c:\linqtest.
Información general
Este tutorial se compone de seis tareas principales:
Crear una solución LINQ to SQL en Visual Studio.
Asignar una clase a una tabla de base de datos.
Designar propiedades en la clase para representar las columnas de base de datos.
Especificar la conexión a la base de datos Northwind.
Crear una consulta simple para ejecutarla en la base de datos.
Ejecutar la consulta y observar los resultados.
Para ver una demostración en vídeo, visite Tutorial en vídeo: Modelo de objetos simple y consultas (Visual Basic) (LINQ to SQL).
Crear una solución LINQ to SQL
En esta primera tarea, va a crear una solución de Visual Studio que contiene las referencias necesarias para generar y ejecutar un proyecto de LINQ to SQL.
Para crear una solución LINQ to SQL
En el menú Archivo, haga clic en Nuevo proyecto.
En el panel Tipos de proyecto del cuadro de diálogo Nuevo proyecto, haga clic en Visual Basic.
En el panel Plantillas, haga clic en Aplicación de consola.
En el cuadro Nombre, escriba LinqConsoleApp.
Haga clic en Aceptar.
Agregar referencias y directivas LINQ
En este tutorial se usan ensamblados que podrían no estar instalados en el proyecto de forma predeterminada. Si System.Data.Linq no se incluye como referencia en su 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
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.
En el cuadro de diálogo Agregar referencia, haga clic en .NET, en el ensamblado System.Data.Linq y, a continuación, en Aceptar.
El ensamblado se agrega al proyecto.
También en el cuadro de diálogo Agregar referencia, haga clic en .NET, desplácese hasta System.Windows.Forms y haga clic en él, y, a continuación, haga clic en Aceptar.
Este ensamblado, que permite usar el cuadro de mensaje en el tutorial, se agrega al proyecto.
Agregue las directivas siguientes antes de Module1:
Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Asignar 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. Este tipo de clase se denomina clase de entidad. Observe que la asignación se realiza con solo agregar el atributo TableAttribute. La propiedad Name 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, justo encima de Sub Main:
<Table(Name:="Customers")> _ Public Class Customer End Class
Designar propiedades en la clase para representar columnas de base de datos
En este paso, realizará varias tareas.
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.
Designará la propiedad CustomerID como representativa de una columna de clave principal en la base de datos.
Designará los campos _CustomerID y _City para el almacenamiento privado. Después, LINQ 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.
Para representar las características de dos columnas de base de datos
Escriba o pegue el código siguiente en Module1.vb, justo delante 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
Especificar la conexión a la base de datos Northwind
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. 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.
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 a la base de datos
Escriba o pegue el código siguiente en el método Sub Main.
Tenga en cuenta que se asume que el archivo northwnd.mdf está en la carpeta linqtest. Para obtener más información, vea 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)()
Crear una consulta simple
En este paso, creará una consulta para buscar los clientes de la tabla de base de datos Customers que se encuentran en Londres. En este paso, el código de la consulta simplemente la describe. No la ejecuta. Este enfoque se denomina ejecución diferida. Para obtener más información, vea Introducción a consultas con LINQ.
También generará un resultado de registro para mostrar los comandos SQL que LINQ to SQL genera. 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.
Para crear una consulta sencilla
Escriba o pegue el código siguiente en el método Sub Main después de la declaración 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
Ejecutar la consulta
En este paso es donde realmente ejecutará la consulta. Las expresiones de consulta creadas en pasos anteriores no se evalúan hasta que no se necesitan los resultados. Al comenzar la iteración For Each, se ejecuta un comando SQL en la base de datos y se materializan los objetos.
Para ejecutar la consulta
Escriba o pegue el código siguiente al final del método Sub Main (después de la descripción de la 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)
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 Aprender mediante tutoriales (LINQ to SQL).
El cuadro de mensaje muestra una lista de seis clientes. La ventana Consola muestra el código SQL generado.
Haga clic en Aceptar para descartar el cuadro de mensaje.
La aplicación se cierra.
En el menú Archivo, haga clic en Guardar todo.
Necesitará esta aplicación si va a continuar con el tutorial siguiente.
Pasos siguientes
El tema Tutorial: Realizar consultas en varias relaciones (Visual Basic) (LINQ to SQL) continúa en el punto donde finaliza este tutorial. El tutorial Realizar consultas en varias relaciones muestra cómo LINQ to SQL puede realizar consultas entre tablas, de forma similar a las combinaciones en las bases de datos relacionales.
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.