Language Integrated Query (LINQ) es un proyecto de Microsoft para agregar una sintaxis de lenguaje de consulta similar a SQL a los lenguajes de programación .NET Framework . Implementado previamente en C# y Visual Basic .NET . Muchos de los conceptos que presenta LINQ se probaron originalmente en el proyecto de investigación Cω de Microsoft .
LINQ se lanzó con Visual Studio 2008 a fines de noviembre de 2007. Para crear y depurar rápidamente consultas LINQ, existe una utilidad especializada llamada LINQPad .
Usando algunas funciones de lenguaje nuevas, LINQ le permite usar una sintaxis similar a SQL directamente en el código de un programa escrito, por ejemplo, en C#:
Al admitir de forma nativa un motor de consulta para colecciones de objetos en memoria, bases de datos relacionales y datos XML , LINQ tiene una arquitectura extensible que permite a los desarrolladores externos acceder a sus almacenes de datos a través del motor LINQ. Para hacer esto, debe implementar operadores de consulta estándar mediante métodos de extensión o implementar la interfaz IQueryable , que le permite analizar el árbol de expresiones en tiempo de ejecución, traduciéndolo a su lenguaje de consulta. Hay un ejemplo de una implementación personalizada de operadores de consulta estándar en la comunidad. [una]
Por ejemplo, LINQ for SQL (anteriormente DLinq), que traduce expresiones LINQ en consultas SQL en una base de datos, utiliza la capacidad del compilador para crear un árbol de expresiones basado en el contexto del programa en lugar de crear funciones delegadas. Dado un árbol de expresión que describe una consulta, un proveedor de base de datos especializado puede analizarlo y traducirlo a una consulta en el idioma apropiado para la base de datos, como Microsoft SQL Server, Jet (que se usa en Microsoft Access) o cualquier otro. Algunos entusiastas ya han creado bibliotecas de prueba de concepto LINQ para consultar colecciones de datos WMI [2] , RSS , LDAP [3] , ADO.NET , Amazon Web Services [4] y SharePoint [5] utilizando esta táctica .
La versión preliminar actual de Microsoft también incluye una implementación de LINQ para XML (anteriormente llamado XLinq), que facilita mucho la creación y extracción de datos de un documento XML utilizando enfoques similares. Además, Microsoft está trabajando en ADO.NET vNext, también conocido como LINQ to Entities.
A finales de 2008, la responsabilidad del desarrollo de LINQ to SQL, junto con ADO.NET Entity Framework (incluido LINQ to Entities), se transfirió al equipo de desarrollo de ADO.NET (el llamado equipo de ADO.NET), mientras que anteriormente LINQ to SQL fue desarrollado por un equipo asociado con el desarrollo de un compilador para el lenguaje C# [6] . Por lo tanto, se hizo evidente que ambas soluciones tienen como objetivo resolver los mismos problemas y, por lo tanto, competirán entre sí. Un poco más tarde, Tim Mallalew aclaró que Microsoft continuaría desarrollando LINQ to SQL en función de los comentarios de los usuarios. Sin embargo, a partir de .NET 4.0, la solución recomendada es LINQ to Entities. Además, en función de las aportaciones de los usuarios, las características más utilizadas de LINQ to SQL se agregarán a LINQ to Entities [7] . Como resultado, habrá una fusión gradual de soluciones.
En general, los expertos apoyaron esta decisión. Entonces, por ejemplo, Marco Russo, aunque hizo una reserva de que pasar a LINQ to Entities no debería ser antes de que se convierta en un reemplazo completo de LINQ to SQL, sin embargo afirmó que combinar dos marcos parcialmente superpuestos es una buena idea, pero al mismo tiempo aquellos usuarios que están acostumbrados a usar partes "descartadas" de soluciones no deberían sufrir [6] .
No es más que programación funcional disfrazada de sintaxis SQL [8] .
La biblioteca LINQ incluye la herramienta SQLMetal, que le permite generar automáticamente clases directamente desde las bases de datos compatibles con .NET Framework, lo que facilita y agiliza la integración de entidades de base de datos en su código. Una alternativa es el diseñador de objetos relacionales incluido con Visual Studio, pero solo se puede usar con Microsoft SQL Server.
.RED | |
---|---|
Implementaciones | |
Arquitectura | |
Infraestructura | |
Idiomas de Microsoft | |
Otros idiomas | |
Fundamentos de Windows | |
Componentes | |
comparaciones |
|
Tecnologías futuras | |
Recursos informativos |