sábado, 23 de abril de 2011

Hablando de Entity Framework y LINQ.

Esto es el comiezo de todo el mundo que contiene Entity Framework y LINQ, para ello empezaremos citando a MSDN de Microsoft donde tenemos las definiciones para Entity Framework y LINQ, respectivamente.

Entity Framework: "Entity Framework es un conjunto de tecnologías de ADO.NET que permiten el desarrollo de aplicaciones de software orientadas a datos. Los arquitectos y programadores de aplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivos muy diferentes. Deben modelar las entidades, las relaciones y la lógica de los problemas empresariales que resuelven, y también deben trabajar con los motores de datos que se usan para almacenar y recuperar los datos. Los datos pueden abarcar varios sistemas de almacenamiento, cada uno con sus propios protocolos; incluso las aplicaciones que funcionan con un único sistema de almacenamiento deben equilibrar los requisitos del sistema de almacenamiento con respecto a los requisitos de escribir un código de aplicación eficaz y fácil de mantener."

LINQ: "Language-Integrated Query (LINQ) es una innovación introducida en Visual Studio 2008 y .NET Framework versión 3.5 que elimina la distancia que separa el mundo de los objetos y el mundo de los datos.
Tradicionalmente, las consultas con datos se expresan como cadenas sencillas, sin comprobación de tipos en tiempo de compilación ni compatibilidad con IntelliSense. Además, es necesario aprender un lenguaje de consultas diferente para cada tipo de origen de datos: bases de datos SQL, documentos XML, servicios Web diversos, etc. LINQ convierte una consulta en una construcción de lenguaje de primera clase en C# y Visual Basic. Las consultas se escriben para colecciones de objetos fuertemente tipadas, utilizando palabras clave del lenguaje y operadores con los que se está familiarizado. La ilustración siguiente muestra una consulta LINQ parcialmente completada en una base de datos SQL Server en C#, con comprobación de tipos completa y compatibilidad con IntelliSense."

En los dos casos trabajamos sobre consultar fuera de SQL SERVER, más bien dentro de nuestro ID Visual Studio, es decir nuestro Entity Framework trabaja en directo con los entidades creados por nuestro modelador de entidades, una vez asociado nuestras entidades y relaciones podemos acceder a los datos por medio de consultas.
Supongamos que tenemos una tabla en nuestra base de datos llamada Tienda con los siguientes campos.
            [idtienda] [int] NOT NULL,
            [tienda] [varchar](50) NOT NULL,
            [direccion] [varchar](200) NOT NULL,
            [telefono] [varchar](10) NULL,
            [ciudad] [varchar](30) NULL,
            [cp] [varchar](6) NULL,
            [descripcion] [varchar](150) NULL 


Por medio de la entidad Tienda podemos realizar una consulta directa. Por ejemplo si queremos tener todos los registros de tiendas que la ciudad sea orizaba seria de esta forma.

Tienda.Where(t => t.ciudad == "Orizaba")

De esta forma tenemos por medio de la entidad tienda todas las tiendas que pertenecen a Orizaba

Ahora supongamos lo queremos hacer pero con listas, tendriamos primero crear nuestra clase de conexión para enlazarnos con la base de datos. Y crear un query donde pongamos la sintaxis de lo que queremos, en este caso seria traer todos los datos de la tabla tienda con un "select * from tiendas", regresar el resultado en un dataset o datareader, dependiendo como se maneje la clase de conexión.

En este caso es muy util por si se piensa estar realizando consultas a la misma tabla para poder explotar la informacion, ya que los datos regresados de nuestro select, lo estariamos almacenando en una lista y con ella poder explotar los datos sin volver a realizar la consulta.
Para ello utilizariamos una clase con los datos de nuestra tabla con el mismo tipo y declararimos la lista de la siguiente forma:

List<Tienda> lstienda = con.query("select * from tiendas");

Donde:
con es el identificador de mi conexión a sql y query el metodo que ejecuta mi consulta y me regresa los datos.

Una vez hecho esto ya podriamos empezar a trabajar con la lista como podemos observer a continuacion:

lstienda.Where(t => t.ciudad== "Orizaba");

espero esto les halla sido de utilidad, muy pronto voy a subir los post de como crear la clase de conexión, crear las entidades, y todo lo necesario para realizar nuestro proyecto con Entity Framework y LINQ.

Un saludo Cordial.

Atte.
LSCA Gustavo Ortiz Gamez.

No hay comentarios:

Publicar un comentario