Compartir a través de


Tutorial: Usar solo procedimientos almacenados (C#)

En esta guía se presenta un escenario básico y completo de LINQ to SQL para acceder a los datos mediante la ejecución únicamente de procedimientos almacenados. 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 C#. 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 la configuración de desarrollo de Visual C#.

Prerrequisitos

Este tutorial requiere lo siguiente:

  • En este tutorial se usa una carpeta dedicada ("c:\linqtest7") 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:\linqtest7.

  • Un archivo de código de C# 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:\linqtest7\northwind.cs" /language:csharp "c:\linqtest7\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 con 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

  1. En el menú Archivo de Visual Studio, seleccione Nuevo y, a continuación, haga clic en Proyecto.

  2. En el panel Tipos de proyecto del cuadro de diálogo Nuevo proyecto , haga clic en Visual C#.

  3. En el panel Plantillas , haga clic en Aplicación de Windows Forms.

  4. En el cuadro Nombre , escriba SprocOnlyApp.

  5. En el cuadro Ubicación , compruebe dónde desea almacenar los archivos del proyecto.

  6. 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

  1. 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.

  2. 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

  1. En el menú del proyecto , haga clic en Agregar elemento existente.

  2. En el cuadro de diálogo Agregar elemento existente , vaya a c:\linqtest7\northwind.cs y, a continuación, haga clic en Agregar.

    El archivo northwind.cs 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:\linqtest7\northwnd.mdf" como ruta de acceso.

Para crear la conexión a la base de datos

  1. En el Explorador de soluciones, haga clic con el botón derecho en Form1.cs y, a continuación, haga clic en Ver código.

  2. Escriba el código siguiente en la Form1 clase :

    Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
    

Configuración de la interfaz de usuario

En esta tarea se configura una interfaz para que los usuarios puedan ejecutar procedimientos almacenados para acceder a los datos de la base de datos. En las aplicaciones 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

  1. Vuelva al Diseñador de Windows Forms (Form1.cs[Diseño]).

  2. 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.

  3. 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.

  4. Haga clic con el botón derecho en label1 y, a continuación, haga clic en Propiedades.

  5. Cambie la propiedad Text de label1 a Enter OrderID:.

  6. De la misma manera para label2, cambie la propiedad Text de label2 a Enter CustomerID:.

  7. De la misma manera, cambie la propiedad Text de button1 a Order Details( Detalles del pedido).

  8. Cambie la propiedad Text de button2 a Order History( Historial de pedidos).

    Amplíe los controles de botón para que todo el texto esté visible.

Para controlar los clics de botón

  1. Haga doble clic en Detalles del pedido en Form1 para abrir el controlador de eventos button1 en el editor de código.

  2. 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.
    string param = textBox1.Text;
    
    // Declare a variable to hold the results
    // returned by the stored procedure.
    var custquery = db.CustOrdersDetail(Convert.ToInt32(param));
    
    // Execute the stored procedure and display the results.
    string msg = "";
    foreach (CustOrdersDetailResult custOrdersDetail in custquery)
    {
        msg = msg + custOrdersDetail.ProductName + "\n";
    }
    if (msg == "")
        msg = "No results.";
    MessageBox.Show(msg);
    
    // Clear the variables before continuing.
    param = "";
    textBox1.Text = "";
    
  3. Ahora, haga doble clic en el botón2 en Form1 para abrir el button2 controlador.

  4. Escriba el código siguiente en el button2 controlador:

    // Comments in the code for button2 are the same
    // as for button1.
    string param = textBox2.Text;
    
    var custquery = db.CustOrderHist(param);
    
    string msg = "";
    foreach (CustOrderHistResult custOrdHist in custquery)
    {
        msg = msg + custOrdHist.ProductName + "\n";
    }
    MessageBox.Show(msg);
    
    param = "";
    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

  1. Presione F5 para iniciar la depuración.

    Aparece Form1.

  2. En el cuadro Escriba OrderID , escriba 10249y, 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.

  3. En el cuadro Escriba CustomerID , escriba ALFKIy, a continuación, haga clic en Historial de pedidos.

    Aparece un cuadro de mensaje que muestra el historial de pedidos del cliente ALFKI.

    Haga clic en Aceptar para cerrar el cuadro de mensaje.

  4. En el cuadro Escriba OrderID , escriba 123y, a continuación, haga clic en Detalles del pedido.

    Aparece un cuadro de mensaje que muestra "No hay resultados".

    Haga clic en Aceptar para cerrar el cuadro de mensaje.

  5. En el menú Depurar , haga clic en Detener depuración.

    La sesión de depuración se cierra.

  6. 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.

Consulte también