Mostrando entradas con la etiqueta Entity Framework. Mostrar todas las entradas
Mostrando entradas con la etiqueta Entity Framework. Mostrar todas las entradas

miércoles, 13 de mayo de 2015

Proyecto Kinect: uso de LINQ to Entities

LINQ to Entities proporciona la capacidad de realizar consultas integradas en Language-Integrated Queries (LINQ) permitiendo escribir consultas contra el modelo conceptual de Entity Framework mediante los lenguajes Visual Basic o Visual C#. Las consultas con EF se representan mediante consultas de árboles de comandos, que se ejecutan en el contexto del objeto. LINQ to Entities convierte las consultas de LINQ en consultas de árboles de comandos, ejecuta las consultas en EF y devuelve objetos que se pueden usar tanto en EF como en LINQ.

Una operación de consulta de LINQ consta de tres acciones: obtener el origen o los orígenes de datos, crear la consulta y ejecutar la consulta.

En la consulta se especifica exactamente la información que se desea recuperar del origen de datos. Una consulta también puede especificar cómo se debe ordenar, agrupar y conformar esa información antes de que se devuelva. En LINQ, una consulta se almacena en una variable. Esta variable de consulta no realiza ninguna acción y no devuelve datos; solamente almacena la información de la consulta. Tras crear una consulta debe ejecutarla para recuperar los datos.

Las consultas de LINQ to Entities se pueden formular en dos sintaxis diferentes:
  • Sintaxis de expresiones de consulta.
  • Sintaxis de consultas basadas en métodos.
La sintaxis de expresiones de consulta consta de un conjunto de cláusulas escritas en una sintaxis declarativa similar a Transact-SQL. Al usar la sintaxis de consulta, se pueden realizar operaciones complejas de filtrado, clasificación, ordenación y agrupación en orígenes de datos con una cantidad mínima de código. En la siguiente imagen, se muestra un método que realiza una consulta completa, incluyendo el uso de un origen de datos, la definición de la expresión de consulta y la ejecución de la consulta por medio de una instrucción foreach:

Código C# con ejemplo de sintaxis de expresiones de consulta
La sintaxis de consultas basadas en métodos no son más que una secuencia de llamadas directas a los métodos de operador de LINQ, como son Where, Select, GroupBy, OrderBy, Join, Max, etc., a las que además se le deben pasar como parámetros expresiones lambda. En la siguiente imagen se puede ver un ejemplo de consulta utilizando expresiones Lambda.

Código C# con ejemplo de sintaxis de consultas basadas en métodos
En comparación, los dos tipos de sintaxis de LINQ son bastante simples, sin embargo para realizar las consultas en el proyecto se ha decidido utilizar la sintaxis de expresiones de consulta estándar, ya que no es necesario crear expresiones Lambda que podrían tornarse complejas cuando la consulta requiera de una mayor elaboración.

En el siguiente post, hablaremos de las librerías para la construcción de aplicaciones orientadas a servicios, Windows Communication Foundation (WCF).

¡Saludos!

Álvaro Alcolea

domingo, 10 de mayo de 2015

Proyecto Kinect: uso de ADO.NET Entity Framework (EF)

ADO.NET Entity Framework es un framework ORM (Object-Relational Model) para la plataforma .NET. Consiste en un conjunto de APIs de acceso a datos. La primera versión fue incluida con .NET Framework 3.5 Service Pack 1 y Visual Studio 2008 Service Pack 1, realizada el 11 de agosto de 2008. Esta primera versión fue muy criticada. Seguidamente se lanzaron otras cuatro versiones hasta llegar a las versiones 5 y 6, corrigiéndose las críticas y problemas de versiones anteriores.

En este proyecto se hará uso de la versión 5.0 que es actualmente la versión estable, a diferencia de la versión 6.0 Alpha 2 que está en desarrollo.

Entity Framework nos ayudara a crear nuestro modelo conceptual y resolver nuestras necesidades de persistencia.

Actualmente permite elegir entre tres enfoques diferentes de creación del modelo conceptual:
  • Database First: El modelo conceptual se crea a partir de una base de datos existente.

Desarrollo del enfoque DataBase First
  • Code First: nuevo a partir de la versión 4.1 de EF. Permite mapear nuestras clases POCO (Plain Old CLR Object) a la base de datos usando convención, Data Annotations o Fluent API.
  • Model First: Este será el enfoque que utilizaremos para nuestro sistema. La idea aquí es crear primero el modelo conceptual y a partir de este generar la base de datos.
Desarrollo del enfoque Model First

La elección de Entity Framework en este proyecto viene motivada por las facilidades que permite a la hora de trabajar con objetos y propiedades específicos del dominio, sin tener que preocuparse por las tablas y columnas de la base de datos donde se almacenan los datos. 

EF además permite trabajar con un mayor nivel de abstracción cuando se trata con datos, pueden crearse y mantenerse aplicaciones orientadas a datos con menos código que en aplicaciones tradicionales. Al ser un componente de .NET Framework, las aplicaciones que hacen uso de EF pueden ser ejecutadas en cualquier equipo en el que esté instalado .NET Framework a partir de la versión 3.5 SP1. También y no menos importante EF 5.0 es completamente compatible con las demás tecnologías y lenguajes utilizados en el proyecto.

Entity Framework además, acepta consultas de tipo LINQ contra el modelo conceptual creado, en el siguiente post se tratará de explicar.

¡Saludos!

Álvaro Alcolea