Using LINQ to SQL (2a. Parte - Procedimientos Almacenados)

Hola a todos,

Para continuar con esta serie de entregas de LINQ to SQL ahora les voy a platicar sobre el uso de Stored Procedures (Procedimientos Almacenados) con esta nueva característica que viene con Visual Studio 2008.

Como ya les había mencionado en el post anterior con LINQ to SQL podemos trabajar con los datos desde nuestro propio lenguaje ya sea VB o C#, para hacer memoria LINQ to SQL utiliza una clase DataContext para la gestión de acceso a la base de datos, esta clase DataContext genera clases .NET para representar entidades y las relaciones de la base de datos que hemos modelado, así como métodos por cada procedimiento almacenado que añadamos.

El uso de procedimientos almacenados siempre será un argumento válido porque estará habilitado para cuestiones de seguridad, rendimiento y disponibilidad para migrar nuestras reglas de negocio.

Recordarán que en el post anterior agregamos tablas de la base de datos a nuestro modelo, pues de la misma forma lo haremos con los procedimientos almacenados que estos serán traducidos en métodos.

Primero les voy a mostrar en que parte hay que agregar nuestros procedimientos almacenados:

 

LinqToSQLSP

 

Ahora vamos a agregar un nuevo procedimiento almacenado en la base de datos LinqToSQL que utilizamos en el post anterior para agregar nuevos clientes y nos debería de quedar algo como esto:

 

LinqToSQLSPInsertCustomer

 

Al momento que utilizamos este procedimiento almacenado en el código confirmaremos que los procedimientos almacenados agregados al modelo de datos se convertirán en métodos y mostrará los parámetros que recibe así como el tipo de dato como vemos en la siguiente figura:

 

LinqToSQLMethod

 

Ahora vamos a modificar el código para que nos quede de la siguiente forma:


VB:

Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click

    Dim db As LinqToSQLDataContext = New LinqToSQLDataContext()

    db.RegistraCliente(txtNombre.Text, txtApellidoPaterno.Text, _
                       txtApellidoMaterno.Text, txtOcupacion.Text, _
                       CDate(txtFechaNacimiento.Text))

    db.SubmitChanges()

    txtNombre.Text = ""
    txtApellidoPaterno.Text = ""
    txtApellidoMaterno.Text = ""
    txtOcupacion.Text = ""
    txtFechaNacimiento.Text = ""
    MostrarGrid()

End Sub

 

C#:

protected void btnGuardar_Click(object sender, EventArgs e)
{
    LinqToSQLDataContext db = new LinqToSQLDataContext();
   

    db.RegistraCliente(txtNombre.Text, txtApellidoPaterno.Text, txtApellidoMaterno.Text, txtOcupacion.Text, Convert.ToDateTime(txtFechaNacimiento.Text));

    db.SubmitChanges(); 
    txtNombre.Text = "";
    txtApellidoPaterno.Text = "";
    txtApellidoMaterno.Text = "";
    txtOcupacion.Text = "";
    txtFechaNacimiento.Text = "";
    MostrarGrid();
}

 

LinqToSQLSPInsertedCustomer

Así de sencillo estamos agregando nuevos registros en la tabla Clientes, como verán estamos ahorrando gran cantidad de código que utilizábamos para agregar registros como lo son la creación de parámetros, comandos, etc., con tan sólo 3 líneas de código hemos creado la función de "Insertar Nuevos Registros", la verdadera funcionalidad se encuentra en el Procedimiento Almacenado que realmente será la que trabaje directamente con los datos.

Que les parece si de tarea hacen el resto de la funcionalidad, es decir la actualización y borrado de registros utilizando procedimientos almacenados y cuando lo tengan listo lo pueden publicar en los foros en la sección de "Repositorio de Código" la idea es que nos darán la retroalimentación necesaria para saber si estamos aportando con un granito de arena para compartir conocimientos con todas aquellas personas que estén dispuestas a seguir aprendiendo más sobre todo este rollo del desarrollo de software con la plataforma .NET.

Espero que este artículo sea de utilidad y como siempre los invito a participar con sus comentarios en relación a los artículos que publicamos todo el equipo de DDN.

 

S@ludos!
Víctor Alameda
Microsoft Certified Solution Developer .NET

Published Monday, May 05, 2008 12:15 AM por VAlameda
Ofrecido por Community Server (Non-Commercial Edition)