linq_v1_al

12
Por: Alfonso López LINQ Language Integrated Query Es un componente de Microsoft.Net Framework que añade la capacidad de realizar consultas nativamente a través de los lenguajes .NET usando una sintaxis similar a la de SQL. Es un modelo de programación que simplifica y unifica la implementación de acceso a cualquier tipo de dato. LINQ no impone a usar una arquitectura específica más bien facilita la implementación de varias arquitecturas existentes para acceso a datos. Como su nombre lo indica, integra conceptos de consultas directamente en los lenguajes de programación, permitiendo que el código de acceso a datos sea verificado por el compilador y las herramientas de desarrollador, como Intellisense para hacer que los desarrolladores escriban queries. Los datos que se deben consultar pueden adoptar la forma de XML (LINQ sobre XML), bases de datos (ADO.NET habilitado para LINQ, que incluye LINQ sobre SQL, LINQ sobre Dataset y LINQ sobre Entidades), objetos (LINQ sobre Objetos), etc.

Upload: alfonso-lopez

Post on 11-Aug-2015

41 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: LINQ_V1_AL

Por: Alfonso López

LINQ

Language Integrated Query

Es un componente de Microsoft.Net Framework que añade la capacidad de realizar consultas nativamente a través de los lenguajes .NET usando una sintaxis similar a la de SQL.

Es un modelo de programación que simplifica y unifica la implementación de acceso a cualquier tipo de dato. LINQ no impone a usar una arquitectura específica más bien facilita la implementación de varias arquitecturas existentes para acceso a datos.

Como su nombre lo indica, integra conceptos de consultas directamente en los lenguajes de programación, permitiendo que el código de acceso a datos sea verificado por el compilador y las herramientas de desarrollador, como Intellisense para hacer que los desarrolladores escriban queries.

Los datos que se deben consultar pueden adoptar la forma de XML (LINQ sobre XML), bases de datos (ADO.NET habilitado para LINQ, que incluye LINQ sobre SQL, LINQ sobre Dataset y LINQ sobre Entidades), objetos (LINQ sobre Objetos), etc.

Page 2: LINQ_V1_AL

LINQ para Objetos

Es el nombre que recibe la API para los operadores de consulta estándar. Este permite hacer consultas en arreglos y colecciones de datos en memoria.

Los operadores estándar de consultas son métodos estáticos de la clase estática Systen.Linq.Enumerable, la cual se utiliza para crear consultas hacia objetos.

LINQ par DataSets

Este es el nombre que recibe la API para manejo de DataSets. Muchos desarrolladores tienen mucho código existente para el uso detasets.

LINQ para SQL

Este es el nombre que recibe la API que permite interactuar con Microsoft SQL Server.

Para poder hacer uso de esta API y aprvechar las características de la misma debemos hacer referencia al ensamble System.Data.Linq.dll.

LINQ para sql es una implementación de ORM (mapeo de objetos relacionales) que nos permite modelar base de datos relacionales con clases de .NET. Podemos consultar base de datos con LINQ así como actualizar/añadir/borrar datos de ellas.

LINQ para Entidades

LINQ para entidades es una API alternativa utilizada para interactuar con bases de datos.

Esta separa el modelo de la base de datos de la base de datos física insertando un mapeo lógico entre los dos.

LINQ para XML

Esta API se utiliza para trabajar con XML.

Para poder aprovechar las ventajas de esta API hay que hacer referencia al ensamble system.Xml.linq.

LINQ para SQL

Desde Visual Studio 2008 viene con un diseñador de LINQ para SQL que nos aporta una forma fcial de modelar y visualizar una base de datos como un modelo de LINQ para SQL.

Usando ese diseñador LINQ para SQL podemos crear una representación de la base de datos.

Page 3: LINQ_V1_AL

En LINQ existen clases relevantes.

DataContext

Esta clase es a través de la cual realizamos las consultas a las entidades de nuestra base de datos. Esta clase tendrá propiedades que representarán a cada tabla que hemos modelado, así como métodos para cada procedimiento almacenado que añadamos.

Page 4: LINQ_V1_AL

Ejemplo

LINQ y ASP

Los resultados de las consultas LINQ implementan IEnumerable la cual es una interfaz que los controles de servidor de ASP. NET soportan para enlazar datos. Lo que implica que podemos enlazar los resultados de cualquier consulta LINQ.

Por ejemplo, se puede declarar un control <asp:gridview> en una página aspx de la siguiente forma:

Page 5: LINQ_V1_AL

Ventajas de Utilizar LINQ

Sintaxis familiar para escribir consultas. Comprobación en tiempo de compilación de errores de sintaxis y seguridad de tipos. Compatibilidad mejorada con el depurador. Capacidad para trabajar directamente con elementos XML en lugar de crear un

documento XML contenedor, que es lo que se requiere en W3C DOM. Modificación de documentos XML en memoria de gran eficacia, aún más fácil de

usar que XPath o XQuery. Funciones de filtrado, ordenación y agrupación eficaces. Modelo coherente para trabajar con datos en varios tipos de formatos y orígenes de

datos.

Desventajas de Utilizar LINQ

No se puede actualizar el esquema de la base de datos, tienes que eliminar su clase y arrástrelo sobre el diagrama de la base de datos.

No activamente desarrollando más (desarrollarán Entity Framework en su lugar).

Page 6: LINQ_V1_AL

ENTITY FRMAWORK

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.

Entity Framework permite a los programadores trabajar con datos en forma de objetos y propiedades específicos del dominio, por ejemplo, con clientes y direcciones, sin tener que pensar en las tablas de las bases de datos subyacentes y en las columnas en las que se almacenan estos datos. Para ello, se eleva el nivel de abstracción en la que los programadores pueden trabajar al tratar con datos y se reduce el código requerido para crear y mantener las aplicaciones orientadas a datos. Dado que Entity Framework es un componente de .NET Framework, las aplicaciones de Entity Framework se pueden ejecutar en cualquier equipo en que esté instalado .NET Framework 3.5 Service Pack 1 (SP1).

Conexiones

LINQ to Entities: proporciona compatibilidad con Language-Integrated Query (LINQ) para consultar los tipos de entidad que se definen en un modelo conceptual. Para obtener más información, vea Información general de LINQ to Entities.

Entity SQL: dialecto independiente del almacenamiento de SQL que funciona directamente con las entidades del modelo conceptual y que admite características del modelo conceptual como la herencia y las relaciones. Entity SQL se utiliza con las consultas de objeto y con las consultas que se ejecutan con el proveedor de EntityClient. Para obtener más información, vea Información general de Entity SQL.

Métodos del generador de consultas: permite construir consultas de Entity SQL utilizando los métodos de consulta del estilo de LINQ. Para obtener más información, vea Métodos del generador de consultas (Entity Framework).

Page 7: LINQ_V1_AL

Ventajas de Entity Framework

Las aplicaciones pueden funcionar en términos de un modelo conceptual más centrado en la aplicación, que incluye tipos con herencia, miembros complejos y relaciones.

Las aplicaciones están libres de dependencias de codificación rígida de un motor de datos o de un esquema de almacenamiento.

Las asignaciones entre el modelo conceptual y el esquema específico de almacenamiento pueden cambiar sin tener que cambiar el código de la aplicación.

Los desarrolladores pueden trabajar con un modelo de objeto de aplicación coherente que se puede asignar a diversos esquemas de almacenamiento, posiblemente implementados en sistemas de administración de base de datos diferentes.

Se pueden asignar varios modelos conceptuales a un único esquema de almacenamiento.

La compatibilidad con Language Integrated Query (LINQ) proporciona validación de la sintaxis en el momento de la compilación para consultas en un modelo conceptual.

Page 8: LINQ_V1_AL

Code first

Este nuevo enfoque, que se introdujo con la versión 4.1 de Entity Framework en abril de 2011, tiene como principal objeto el simplificar nuestros objetos de mapeo de Base de Datos, gracias a escribir nosotros mismos dichos objetos.

De forma predeterminada, se utiliza un mapeo por convención en lugar de configuración. Es decir, si no especificamos el mapeo, se utilizan los nombres de las clases y sus propiedades para generar los nombres de las tablas y sus campos.

Code First es un nuevo enfoque de trabajo que aparece en el Entity Framework a partir de las versión 4.1, que nos permite crear nuestro modelo mediante clases POCO (Plain Old CLR Object), a partir de las cuales se generará nuestro modelo de base de datos

La principal ventaja de usar clases POCO es que el modelo de clases es más limpio ya que las clases no tiene ninguna dependencia con el Entity Framework (clase EntityObject). Por defecto se utiliza el nombre de nuestras clases y correspondientes propiedades para generar los nombres de tablas y campos. Esto puede ser más que suficiente para muchos proyectos, sobre todo si están empezando de cero, pero, ¿Que ocurre si   queremos hacer modificaciones en nuestro modelo de datos? Para eso tenemos dos alternativas

Data Annotations

Fluent Api

Para poder trabajar con CodeFirst es necesario usar la versión 4.1 (o superior) del Entity Framework.

Page 9: LINQ_V1_AL

Conclusiones

Podemos concluir que:

LINQ tuvo una gran acogida en tiempos atrás fue una herramienta muy potente pero en la actualidad ha tenido una gran acogida lo que es Entity Framawork con sus diferentes componentes y herramientas que ayudan en la producción de desarrollo. Una de estas herramientas es Code first que nos permite el mapeo de objetos de la base de datos. Sin tener que preocuparse de los cabios y relaciones que puedan existir en esta.