Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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.
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
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, haga clic en el ensamblado System.Data.Linq y, a continuación, haga clic 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 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.
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
yCity
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 laTable(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
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)
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.
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 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.