Cómo: Llamar a un procedimiento almacenado usando LINQ (Visual Basic)
Language Integrated Query (LINQ) facilita el acceso a la información de una base de datos, incluso a objetos de base de datos como procedimientos almacenados.
En el ejemplo siguiente se muestra cómo crear una aplicación que llama a un procedimiento almacenado de una base de datos de SQL Server. En el ejemplo se muestra cómo llamar a dos procedimientos almacenados diferentes de la base de datos. Cada procedimiento devuelve los resultados de una consulta. Un procedimiento toma parámetros de entrada y el otro no.
En los ejemplos de este tema se usa la base de datos de ejemplo Northwind. Si no dispone de esta base de datos en el equipo de desarrollo, puede descargarla del Centro de descarga de Microsoft. Para obtener instrucciones, vea Descargar bases de datos de ejemplo.
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. 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 Personalizar el IDE.
Para crear una conexión a una base de datos
En Visual Studio, abra Explorador de servidores/Explorador de bases de datos, para lo cual, haga clic en Explorador de servidores/Explorador de bases de datos en el menú Ver.
Haga clic con el botón derecho en Conexiones de datos en Explorador de servidores/Explorador de bases de datos y luego haga clic en Agregar conexión.
Especifique una conexión válida a la base de datos de ejemplo Northwind.
Para agregar un proyecto que contenga un archivo LINQ to SQL
En el menú Archivo de Visual Studio, apunte a Nuevo y haga clic en Proyecto. Seleccione Aplicación de Windows Forms de Visual Basic como tipo de proyecto.
En el menú Proyecto , haga clic en Agregar nuevo elemento. Seleccione la plantilla de elemento Clases de LINQ to SQL.
Ponga al archivo el nombre
northwind.dbml
. Haga clic en Agregar. Se abre Object Relational Designer en el archivo northwind.dbml.
Para agregar procedimientos almacenados a Object Relational Designer
En Explorador de servidores/Explorador de bases de datos, expanda la conexión a la base de datos Northwind. Expanda la carpeta Procedimientos almacenados .
Si ha cerrado Object Relational Designer, puede volver a abrirlo si hace doble clic en el archivo northwind.dbml que ha agregado anteriormente.
Haga clic en el procedimiento almacenado Sales by Year y arrástrelo al panel derecho del diseñador. Haga clic en el procedimiento almacenado Ten Most Expensive Products y arrástrelo al panel derecho del diseñador.
Guarde los cambios y cierre el diseñador.
Guarde el proyecto.
Para agregar código para mostrar los resultados de los procedimientos almacenados
En el Cuadro de herramientas, arrastre un control DataGridView a la instancia predeterminada de Windows Forms del proyecto, Form1.
Haga doble clic en Form1 para agregar código a su evento
Load
.Cuando ha agregado procedimientos almacenados a Object Relational Designer, el diseñador ha agregado un objeto DataContext para el proyecto. Este objeto contiene el código que se debe tener para acceder a esos procedimientos. El nombre del objeto DataContext del proyecto se basa en el nombre del archivo .dbml. En este proyecto, el nombre del objeto DataContext es
northwindDataContext
.Puede crear una instancia de DataContext en el código y llamar a los métodos de procedimientos almacenados especificados por Object Relational Designer. Para enlazar con el objeto DataGridView, es posible que tenga que forzar la ejecución inmediata de la consulta mediante una llamada al método ToList en los resultados del procedimiento almacenado.
Agregue el código siguiente al evento
Load
para llamar a cualquiera de los procedimientos almacenados expuestos como métodos en el contexto de datos.Dim db As New northwindDataContext ' Display the results of the Sales_by_Year stored procedure. DataGridView1.DataSource = db.Sales_by_Year(#1/1/1996#, #1/1/2007#).ToList()
' Display the results of the Ten_Most_Expensive_Products ' stored procedure. DataGridView1.DataSource = db.Ten_Most_Expensive_Products.ToList()
Presione F5 para ejecutar el proyecto y ver los resultados.