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

No hay comentarios:

Publicar un comentario

Añade un comentario