LINQ y ADO.NET

Actualmente, muchos programadores empresariales deben usar dos (o más) lenguajes de programación: un lenguaje de alto nivel para las capas de presentación y lógica empresarial (como Visual C# o Visual Basic) y un lenguaje de consulta para interactuar con la base de datos (como Transact-SQL).Esto requiere que el programador tenga conocimientos de varios idiomas para ser efectivo y también causa discrepancias de idiomas en el entorno de desarrollo.Por ejemplo, una aplicación que utiliza API de acceso a datos para ejecutar una consulta en una base de datos especifica la consulta como un literal de cadena usando comillas.Esta cadena de consulta es ilegible y no se comprueba si contiene errores, tales como una sintaxis no válida o si existen las columnas o las filas a las que hace referencia.No hay ninguna comprobación de tipo de los parámetros de consulta y tampoco hay compatibilidad con IntelliSense.

Language-Integrated Query (LINQ) permite a los programadores formar consultas basadas en conjuntos en el código de su aplicación, sin tener que usar un lenguaje de consulta independiente.Se puede escribir consultas de LINQ en varios orígenes de datos enumerables (es decir, un origen de datos que implementa la interfaz IEnumerable), como estructuras de datos en memoria, documentos XML, bases de datos SQL y objetos DataSet.Aunque esos orígenes de datos enumerables se implementan de varias formas, todos revelan las mismas construcciones de lenguaje y sintaxis.Como las consultas se pueden formar en el lenguaje de programación mismo, no es necesario utilizar otro lenguaje de consultas que esté incrustado como literales de cadena que el compilador no pueda entender o comprobar.La integración de consultas en el lenguaje de programación también permite a los programadores de Visual Studio ser más productivos proporcionando comprobación de sintaxis y tipo en tiempo de compilación e IntelliSense.Estas características reducen la necesidad de depuración y corrección de errores de consultas.

La transferencia de datos de las tablas de SQL a objetos de memoria a menudo es una tarea tediosa y propensa a errores.El proveedor de LINQ implementado por LINQ to DataSet y LINQ to SQL convierte el origen de datos en recopilaciones de objetos basadas en IEnumerable.El programador siempre ve los datos como una recopilación de IEnumerable cuando se realiza la consulta y la actualización.Se proporciona compatibilidad completa con IntelliSense para escribir consultas en esas colecciones.

Existen tres tecnologías Language-Integrated Query (LINQ) de ADO.NET independientes: LINQ to DataSet, LINQ to SQL y LINQ to Entities.LINQ to DataSet proporciona consultas más ricas y optimizadas de DataSet, LINQ to SQL permite consultar directamente los esquemas de base de datos de SQL Server y LINQ to Entities permite consultar un Entity Data Model.

El siguiente diagrama proporciona una visión general de cómo se relacionan las tecnologías ADO.NET LINQ con lenguajes de programación de alto nivel y orígenes de datos habilitados para LINQ.

Información general sobre LINQ to ADO.NET

Para obtener información general acerca de las características del lenguaje LINQ, vea Introducción a LINQ.Para obtener información sobre cómo usar LINQ en las aplicaciones, vea la Guía de programación general con LINQ, que contiene información detallada sobre el uso de las tecnologías LINQ.

En las siguientes secciones se proporciona más información acerca de LINQ to DataSet, LINQ to SQL y LINQ to Entities.

LINQ to DataSet

DataSet es un elemento fundamental del modelo de programación desconectada sobre el que se basa ADO.NET y se usa ampliamente.LINQ to DataSet permite a los programadores crear capacidades de consulta más complejas en DataSet utilizando el mismo mecanismo de formulación de consultas que está disponible para muchos otros orígenes de datos.Para obtener más información, vea LINQ to DataSet.

LINQ to SQL

LINQ to SQL es una herramienta útil para programadores que no requieren la asignación a un modelo conceptual.Si utiliza LINQ to SQL, puede usar el modelo de programación de LINQ directamente en un esquema de base de datos existente.LINQ to SQL permite a los programadores generar clases de .NET Framework que representan datos.En lugar de la asignación a un modelo de datos conceptual, esas clases generadas se asignan directamente a tablas de bases de datos, vistas, procedimientos almacenados y funciones definidas por el usuario.

Con LINQ to SQL, los programadores pueden escribir código directamente en el esquema de almacenamiento usando el mismo modelo de programación de LINQ que las recopilaciones en memoria y DataSet, además de otros orígenes de datos como XML.Para obtener más información, vea LINQ to SQL.

LINQ to Entities

La mayoría de las aplicaciones se escriben actualmente sobre las bases de datos relacionales.En algún punto, estas aplicaciones tendrán que interactuar con los datos representados en un formato relacional.Los esquemas de base de datos no siempre son ideales para crear aplicaciones y los modelos conceptuales de aplicación no son iguales que los modelos lógicos de bases de datos.Entity Data Model es un modelo de datos conceptual que se puede usar para crear un modelo de los datos de un dominio en particular para que las aplicaciones puedan interactuar con datos como objetos.Para obtener más información, vea ADO.NET Entity Framework.

A través de Entity Data Model, los datos relacionales se exponen como objetos en el entorno .NET.Esto hace que el nivel de objetos sea un objetivo ideal para la compatibilidad con LINQ, que permite a los desarrolladores formular consultas en la base de datos desde el lenguaje usado para crear la lógica empresarial.Esta capacidad se conoce como LINQ to Entities.Para obtener más información, vea LINQ to Entities.

Vea también

Otros recursos

LINQ to DataSet

LINQ to SQL

LINQ to Entities

LINQ (Language-Integrated Query)