Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la actualidad, muchos desarrolladores empresariales deben usar dos (o más) lenguajes de programación: un lenguaje de alto nivel para las capas de lógica de negocios y presentación (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 desarrollador sea competente en varios lenguajes para que sea eficaz y también provoca errores de coincidencia de lenguaje en el entorno de desarrollo. Por ejemplo, una aplicación que usa una API de acceso a datos para ejecutar una consulta en una base de datos especifica la consulta como un literal de cadena mediante comillas. Esta cadena de consulta no se puede leer en el compilador y no se comprueba si hay errores, como la sintaxis no válida o si las columnas o filas a las que hace referencia realmente existen. 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 desarrolladores formar consultas basadas en conjuntos en su código de aplicación, sin tener que usar un lenguaje de consulta independiente. Puede escribir consultas LINQ en varios orígenes de datos enumerables (es decir, un origen de datos que implemente la IEnumerable interfaz), como estructuras de datos en memoria, documentos XML, bases de datos SQL y DataSet objetos. Aunque estos orígenes de datos enumerables se implementan de varias maneras, todos exponen la misma sintaxis y construcciones de lenguaje. Dado que las consultas se pueden formar en el propio lenguaje de programación, no es necesario usar otro lenguaje de consulta incrustado como literales de cadena que el compilador no pueda entender ni comprobar. La integración de consultas en el lenguaje de programación permite también que los programadores de Visual Studio sean más productivos al proporcionar la verificación de tipos y sintaxis en tiempo de compilación, y IntelliSense. Estas características reducen la necesidad de depuración de consultas y corrección de errores.
La transferencia de datos de tablas SQL a objetos en memoria suele ser tediosa y propensa a errores. El proveedor LINQ implementado por LINQ to DataSet y LINQ to SQL convierte los datos de origen en colecciones de objetos basadas en IEnumerable. El programador siempre ve los datos como una IEnumerable colección, tanto cuando se consulta como cuando se actualiza. Se proporciona compatibilidad completa con IntelliSense para escribir consultas en esas colecciones.
Hay tres tecnologías de consulta de ADO.NET Language-Integrated independientes (LINQ): LINQ to DataSet, LINQ to SQL y LINQ to Entities. LINQ to DataSet proporciona consultas enriquecidas y optimizadas sobre DataSet y LINQ to SQL le permite consultar directamente esquemas de base de datos de SQL Server y LINQ to Entities le permite consultar un modelo de datos de entidad.
En el diagrama siguiente se proporciona información general sobre cómo se relacionan las tecnologías ADO.NET LINQ con los lenguajes de programación de alto nivel y los orígenes de datos habilitados para LINQ.
Para obtener más información sobre LINQ, vea Language Integrated Query (LINQ).
En las secciones siguientes se proporciona más información sobre LINQ to DataSet, LINQ to SQL y LINQ to Entities.
LINQ to DataSet
DataSet es un elemento clave del modelo de programación desconectado en el que se basa ADO.NET y se usa ampliamente. LINQ to DataSet permite a los desarrolladores crear funcionalidades de consulta más enriquecidas en DataSet mediante el mismo mecanismo de formulación de consultas que está disponible para muchos otros orígenes de datos. Para obtener más información, consulte LINQ to DataSet.
LINQ to SQL
LINQ to SQL es una herramienta útil para desarrolladores que no necesitan realizar la asignación a un modelo conceptual. Mediante LINQ to SQL, puede usar el modelo de programación LINQ directamente sobre el esquema de base de datos existente. LINQ to SQL permite a los desarrolladores generar clases de .NET Framework que representan datos. En lugar de asignarse a un modelo de datos conceptual, estas clases generadas se asignan directamente a las tablas de bases de datos, vistas, procedimientos almacenados y funciones definidas por el usuario.
Con LINQ to SQL, los desarrolladores pueden escribir código directamente contra el esquema de almacenamiento usando el mismo patrón de programación LINQ que se utiliza con las colecciones en memoria y DataSet, además de otros orígenes de datos como XML. Para obtener más información, consulte LINQ to SQL.
LINQ to Entities
La mayoría de las aplicaciones se escriben actualmente sobre bases de datos relacionales. En algún momento, 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 compilar aplicaciones y los modelos conceptuales de la aplicación no son los mismos que los modelos lógicos de las bases de datos. Entity Data Model es un modelo de datos conceptual que se puede usar para modelar los datos de un dominio determinado para que las aplicaciones puedan interactuar con datos como objetos. Para obtener más información, consulte ADO.NET Entity Framework.
A través del modelo de datos de entidad, los datos relacionales se exponen como objetos en el entorno de .NET. Esto hace que la capa de objetos sea un destino ideal para la compatibilidad con LINQ, lo que permite a los desarrolladores formular consultas en la base de datos desde el lenguaje usado para crear la lógica de negocios. Esta funcionalidad se conoce como LINQ to Entities. Para obtener más información, consulte LINQ to Entities.