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 esta guía práctica se presenta un escenario básico de principio a fin de LINQ to SQL para el acceso a datos mediante procedimientos almacenados exclusivamente. A menudo, los administradores de bases de datos usan este enfoque para limitar cómo se accede al almacén de datos.
Nota:
También puede usar procedimientos almacenados en aplicaciones LINQ to SQL para sobrescribir el comportamiento predeterminado, especialmente para Create
, Update
, y Delete
. Para obtener más información, vea Personalización de operaciones de inserción, actualización y eliminación.
Para los fines de este tutorial, usará dos métodos que se han asignado a procedimientos almacenados en la base de datos de ejemplo Northwind: CustOrdersDetail y CustOrderHist. La asignación se produce al ejecutar la herramienta de línea de comandos SqlMetal para crear un archivo de Visual Basic. Para obtener más información, consulte la sección Requisitos previos más adelante en este tutorial.
Este tutorial no se basa en el Diseñador relacional de objetos. Los desarrolladores que usan Visual Studio también pueden usar el Diseñador de O/R para implementar la funcionalidad de procedimiento almacenado. Consulte Herramientas de LINQ to SQL en Visual Studio.
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
Este tutorial requiere lo siguiente:
En este tutorial se usa una carpeta dedicada ("c:\linqtest3") para almacenar archivos. Cree esta carpeta antes de comenzar el tutorial.
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 northwnd.mdf en la carpeta c:\linqtest3.
Un archivo de código de Visual Basic generado a partir de la base de datos Northwind.
Este tutorial se escribió mediante la herramienta SqlMetal con la siguiente línea de comandos:
sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize
Para obtener más información, vea SqlMetal.exe (Herramienta de generación de código).
Información general
Este tutorial consta de seis tareas principales:
Configuración de la solución LINQ to SQL en Visual Studio.
Agregar el ensamblado System.Data.Linq al proyecto.
Agregar el archivo de código de base de datos al proyecto.
Creación de una conexión a la base de datos.
Configuración de la interfaz de usuario.
Ejecución y prueba de la aplicación.
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 de Visual Studio, haga clic en Nuevo proyecto.
En el panel Tipos de proyecto del cuadro de diálogo Nuevo proyecto , expanda Visual Basic y, a continuación, haga clic en Windows.
En el panel Plantillas , haga clic en Aplicación de Windows Forms.
En el cuadro Nombre , escriba SprocOnlyApp.
Haz clic en Aceptar.
Se abre el Diseñador de Windows Forms.
Agregar la referencia al ensamblado de LINQ to SQL
El ensamblado LINQ to SQL no se incluye en la plantilla de aplicación estándar de Windows Forms. Tendrá que agregar el conjunto por su cuenta, como se explica en los pasos siguientes:
Para agregar System.Data.Linq.dll
En el Explorador de soluciones, haga clic en Mostrar todos los archivos.
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.
Agregar el archivo de código Northwind al proyecto
En este paso se supone que ha usado la herramienta SqlMetal para generar un archivo de código a partir de la base de datos de ejemplo Northwind. Para obtener más información, consulte la sección Requisitos previos anteriormente en este tutorial.
Para agregar el archivo de código northwind al proyecto
En el menú del proyecto , haga clic en Agregar elemento existente.
En el cuadro de diálogo Agregar elemento existente , vaya a c:\linqtest3\northwind.vb y, a continuación, haga clic en Agregar.
El archivo northwind.vb se agrega al proyecto.
Creación de una conexión de base de datos
En este paso, definirá la conexión a la base de datos de ejemplo Northwind. En este tutorial se usa "c:\linqtest3\northwnd.mdf" como ruta de acceso.
Para crear la conexión a la base de datos
En el Explorador de soluciones, haga clic con el botón derecho en Form1.vb y, a continuación, haga clic en Ver código.
Class Form1
aparece en el editor de código.Escriba el código siguiente en el
Form1
bloque de código:Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
Configuración de la interfaz de usuario
En esta tarea se crea una interfaz para que los usuarios puedan ejecutar procedimientos almacenados para acceder a los datos de la base de datos. En la aplicación que está desarrollando con este tutorial, los usuarios solo pueden acceder a los datos de la base de datos mediante los procedimientos almacenados insertados en la aplicación.
Para configurar la interfaz de usuario
Vuelva al Diseñador de Windows Forms (Form1.vb[Diseño]).
En el menú Ver , haga clic en Cuadro de herramientas.
Se abre el cuadro de herramientas.
Nota:
Haga clic en la chincheta AutoHide para mantener el cuadro de herramientas abierto mientras realiza los pasos restantes de esta sección.
Arrastre dos botones, dos cuadros de texto y dos etiquetas desde el cuadro de herramientas hasta Form1.
Organice los controles como en la ilustración adjunta. Expanda Form1 para que los controles se ajusten fácilmente.
Haga clic con el botón derecho en Label1 y, a continuación, haga clic en Propiedades.
Cambie la propiedad Text de Label1 a Enter OrderID:.
De la misma manera para Label2, cambie la propiedad Text de Label2 a Enter CustomerID:.
De la misma manera, cambie la propiedad Text de Button1 a Order Details( Detalles del pedido).
Cambie la propiedad Text de Button2 a Historial de pedidos.
Amplíe los controles de botón para que todo el texto esté visible.
Para controlar los clics de botón
Haga doble clic en Detalles del pedido en Form1 para crear el
Button1
controlador de eventos y abrir el editor de código.Escriba el código siguiente en el
Button1
controlador:' Declare a variable to hold the contents of ' TextBox1 as an argument for the stored ' procedure. Dim parm As String = TextBox1.Text ' Declare a variable to hold the results returned ' by the stored procedure. Dim custQuery = db.CustOrdersDetail(parm) ' Clear the message box of previous results. Dim msg As String = "" Dim response As MsgBoxResult ' Execute the stored procedure and store the results. For Each custOrdersDetail As CustOrdersDetailResult In custQuery msg &= custOrdersDetail.ProductName & vbCrLf Next ' Display the results. If msg = "" Then msg = "No results." End If response = MsgBox(msg) ' Clear the variables before continuing. parm = "" TextBox1.Text = ""
Ahora, haga doble clic en Button2 en Form1 para crear el
Button2
controlador de eventos y abrir el editor de código.Escriba el código siguiente en el
Button2
controlador:' Comments in the code for Button2 are the same ' as for Button1. Dim parm As String = TextBox2.Text Dim custQuery2 = db.CustOrderHist(parm) Dim msg As String = "" Dim response As MsgBoxResult For Each custOrdHist As CustOrderHistResult In custQuery2 msg &= custOrdHist.ProductName & vbCrLf Next If msg = "" Then msg = "No results." End If response = MsgBox(msg) parm = "" TextBox2.Text = ""
Probar la aplicación
Ahora es el momento de probar la aplicación. Tenga en cuenta que el contacto con el almacén de datos se limita a cualquier acción que puedan realizar los dos procedimientos almacenados. Esas acciones son devolver los productos incluidos para cualquier ID de pedido que introduzca o devolver un historial de productos solicitados para cualquier ID de cliente que introduzca.
Para probar la aplicación
Presione F5 para iniciar la depuración.
Aparece Form1.
En el cuadro Escriba OrderID , escriba 10249 y, a continuación, haga clic en Detalles del pedido.
Un cuadro de mensaje muestra los productos incluidos en el pedido 10249.
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el cuadro Escriba CustomerID , escriba
ALFKI
y, a continuación, haga clic en Historial de pedidos.Un cuadro de mensaje muestra el historial de pedidos del cliente ALFKI.
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el cuadro Escriba OrderID , escriba
123
y, a continuación, haga clic en Detalles del pedido.Un cuadro de mensaje muestra "Sin resultados".
Haga clic en Aceptar para cerrar el cuadro de mensaje.
En el menú Depurar , haga clic en Detener depuración.
La sesión de depuración se cierra.
Si ha terminado de experimentar, puede hacer clic en Cerrar proyecto en el menú Archivo y guardar el proyecto cuando se le solicite.
Pasos siguientes
Puede mejorar este proyecto realizando algunos cambios. Por ejemplo, podría enumerar los procedimientos almacenados disponibles en un cuadro de lista y hacer que el usuario seleccione los procedimientos que se van a ejecutar. También puede transmitir la salida de los informes a un archivo de texto.