jueves, 26 de noviembre de 2009

Conociendo LINQ Parte I

Hola gente, aquí estoy de nuevo, en esta oportunidad les voy hablar de LINQ (Language Integrated Query), solo un par de ideas básicas como para saber lo que se viene en Acceso Avanzado a Datos.

Bueno manos a la obra, si mal no recuerdo la idea de crear store procedure (procedimientos almacenados) nació de la necesidad de evitar el Sql injection que trajo unos cuantos dolores de cabeza a más de un programador y además evitar que se hagan consultas SQL del lado del code-behind, ya se seguro están pensando y que se le dio a la gente de MICROSOFT, porque ahora volvamos a usar consultas SQL del lado del code-behind, por ahora le doy la primera razón, a medida que avancemos en el post les mostrare otras razones, la primera razón es evitar los "Impactos" en el motor de la Base de Datos como así también el desgaste del mismo, suena algo extraño pero es una de las razones, si queda duda después me preguntan y yo consulto con algún DBA :P

En este proyecto y en futuros vamos a utilizar la base de datos Northwind, aquí les dejo el link de descarga http://www.microsoft.com/downloads/details.aspx?FamilyId=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

por si no la tiene en sus pc's u ordenadores, creamos una web page en blanco de asp.net en Visual Studio 2008, como nombre de proyecto elegí ponerle Linq01, que original lo mío ¿no? jajaja ahora al default.aspx que trae nuestro proyecto le agregamos un Gridview de nombre Gridview1, hoy estoy a full con los nombres jejeje, en nuestro web.config agregamos la siguiente cadena de conexión:

<add name="NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient">

en el solution explorer y sobre el nombre del proyecto, damos click boton derecho del mouse y ahora add new item y seleccionamos "LINQ to SQL Classes" y le daremos por nombre que lleva la base de datos que estamos usando (Northwind), no es obligatorio que lleve este nombre, solo lo hago para hacer mas entendible el código y además que si se trabaja con más de una base de datos este nombre nos ayudara a diferenciar sobre cual estamos trabajando. aquí les dejo una imagen

http://yfrog.com/4jscreen01tp

Una vez hecho esto, se nos abrirá el archivo Northwind.dbml, ahora nos vamos a la pestaña server explorer o la buscamos en el menú "ver" elegimos la base de datos Northwind nos vamos a la carpeta que contiene las tablas y seleccionamos las tablas que necesitamos, por mi parte voy a seleccionar todas, y las arrastramos sobre el archivo Northwind.dbml así como se muestra a continuación.

http://yfrog.com/7fscreen02rp

Ustedes se preguntaran que es lo que hace el achivo Northwind.dbml, dando una vision general podemos decir que hace un "Mapeo" de la base de datos y encapsula todo esto en una clase NorthwindDataContext, es importante declarar la cadena de conexion antes de agregar esta clase, dado que se basa en la misma para encapsular la cadena de conexion, como se ve en la siguiente imagen (lo que se ve aqui, es el archivo Northwind.designer.cs).

http://yfrog.com/7bscreen03gp

Ahora si, empecemos a hacer consultas con LINQ, junto a la Gridview1 agregaremos un label cde nombre: lbl_Productos y en la propiedad text le asignamos Productos, junto a este un textbox de nombre txt_Productos y un boton de nombre btn_consultar y en el text del boton le asignamos Consultar, damos doble click en este boton, para ya en el code-behind empezar con las consultas, veamos la siguiente imagen

http://yfrog.com/13screen04wp

Con esto doy por finalizada la primera parte del post de Linq, en la segunda parte veremos cómo hacer un ABM y un poco de expresiones Lamda.
Como siempre espero sus comentarios y/o sugerencias.
Hasta el próximo post :D

2 comentarios:

  1. Muy bueno Javi!

    Tengo pensado darle una pequeña capacitación a unos amigos, sobre LINQ justamente.

    Saludos che!

    ResponderEliminar
  2. jajaja bueno, espero te sirva de algo esta intro, la semana que viene llega la segunda parte, igual si te puedo ayudar en algo sabes como encontrarme.

    Saludos

    ResponderEliminar