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.
Entity Framework es un conjunto de tecnologías en ADO.NET que admiten el desarrollo de aplicaciones de software orientadas a datos. Los arquitectos y desarrolladores de aplicaciones orientadas a datos han tenido problemas con la necesidad de lograr dos objetivos muy diferentes. Deben modelar las entidades, las relaciones y la lógica de los problemas empresariales que están solucionando, y también deben trabajar con los motores de datos usados para almacenar y recuperar los datos. Los datos pueden abarcar varios sistemas de almacenamiento, cada uno con sus propios protocolos; Incluso las aplicaciones que funcionan con un único sistema de almacenamiento deben equilibrar los requisitos del sistema de almacenamiento con respecto a los requisitos de escritura de código de aplicación eficaz y fácil de mantener.
Entity Framework permite a los desarrolladores trabajar con datos en forma de objetos y propiedades específicos del dominio, como clientes y direcciones de cliente, sin tener que preocuparse por sí mismos con las tablas y columnas de base de datos subyacentes donde se almacenan estos datos. Con Entity Framework, los desarrolladores pueden trabajar en un nivel superior de abstracción cuando se ocupan de los datos y pueden crear y mantener aplicaciones orientadas a datos con menos código que en las aplicaciones tradicionales. Dado que Entity Framework es un componente de .NET Framework, las aplicaciones de Entity Framework se pueden ejecutar en cualquier equipo en el que se instale .NET Framework a partir de la versión 3.5 SP1.
Dar vida a los modelos
Un enfoque de diseño común y de larga duración al compilar una aplicación o servicio es la división de la aplicación o el servicio en tres partes: un modelo de dominio, un modelo lógico y un modelo físico. El modelo de dominio define las entidades y relaciones en el sistema que se está modelando. El modelo lógico de una base de datos relacional normaliza las entidades y las relaciones en tablas con restricciones de clave externa. El modelo físico aborda las funcionalidades de un motor de datos determinado especificando detalles de almacenamiento como la creación de particiones y la indexación.
Los administradores de bases de datos refinan el modelo físico para mejorar el rendimiento, pero los programadores que escriben código de aplicación se limitan principalmente a trabajar con el modelo lógico escribiendo consultas SQL y llamando a procedimientos almacenados. Los modelos de dominio se suelen usar como una herramienta para capturar y comunicar los requisitos de una aplicación, con frecuencia como diagramas inertes que se ven y tratan en las primeras fases de un proyecto y, a continuación, se abandonan. Muchos equipos de desarrollo omiten la creación de un modelo conceptual y comienzan especificando tablas, columnas y claves en una base de datos relacional.
Entity Framework proporciona vida a los modelos al permitir a los desarrolladores consultar entidades y relaciones en el modelo de dominio (denominado modelo conceptual en Entity Framework) mientras se basa en Entity Framework para traducir esas operaciones a comandos específicos del origen de datos. Esto libera las aplicaciones de dependencias codificadas de forma rígida en un origen de datos determinado.
Al trabajar con Code First, el modelo conceptual se asigna al modelo de almacenamiento en el código. Entity Framework puede deducir el modelo conceptual en función de los tipos de objeto y configuraciones adicionales que defina. Los metadatos de asignación se generan durante el tiempo de ejecución en función de una combinación de cómo se definen los tipos de dominio y la información de configuración adicional que se proporciona en el código. Entity Framework genera la base de datos según sea necesario en función de los metadatos. Para obtener más información, vea Crear un modelo.
Cuando se trabaja con Entity Data Model Tools, el modelo conceptual, el modelo de almacenamiento y las asignaciones entre los dos se expresan en esquemas basados en XML y se definen en archivos que tienen extensiones de nombre correspondientes:
El lenguaje de definición de esquemas conceptuales (CSDL) define el modelo conceptual. CSDL es la implementación de Entity Framework del modelo de datos de entidad. La extensión de archivo es .csdl.
El lenguaje de definición de esquemas de almacenamiento (SSDL) define el modelo de almacenamiento, que también se denomina modelo lógico. La extensión de archivo es .ssdl.
El lenguaje de especificación de asignación (MSL) define las asignaciones entre los modelos conceptuales y de almacenamiento. La extensión de archivo es .msl.
El modelo de almacenamiento y las asignaciones pueden cambiar según sea necesario sin necesidad de realizar cambios en el modelo conceptual, las clases de datos o el código de la aplicación. Dado que los modelos de almacenamiento son específicos del proveedor, puede trabajar con un modelo conceptual coherente en varios orígenes de datos.
Entity Framework usa estos archivos de modelo y asignación para crear, leer, actualizar y eliminar operaciones en entidades y relaciones en el modelo conceptual a operaciones equivalentes en el origen de datos. Entity Framework admite incluso la asignación de entidades en el modelo conceptual a procedimientos almacenados en el origen de datos. Para obtener más información, consulte CSDL, SSDL y Especificaciones de MSL.
Asignación de objetos a datos
La programación orientada a objetos supone un desafío para interactuar con los sistemas de almacenamiento de datos. Aunque la organización de clases refleja con frecuencia la organización de las tablas de base de datos relacionales, el ajuste no es perfecto. Varias tablas normalizadas suelen corresponder a una sola clase y las relaciones entre clases a menudo se representan de forma diferente a las relaciones entre tablas. Por ejemplo, para representar al cliente para un pedido de ventas, una Order
clase podría usar una propiedad que contenga una referencia a una instancia de una Customer
clase, mientras que una Order
fila de tabla de una base de datos contiene una columna de clave externa (o un conjunto de columnas) con un valor que corresponde a un valor de clave principal de la Customer
tabla. Una Customer
clase podría tener una propiedad denominada Orders
que contiene una colección de instancias de la Order
clase, mientras que la Customer
tabla de una base de datos no tiene ninguna columna comparable. Entity Framework proporciona a los desarrolladores la flexibilidad de representar relaciones de esta manera o para modelar más estrechamente las relaciones a medida que se representan en la base de datos.
Las soluciones existentes han intentado salvar esta brecha, que a menudo se denomina "falta de coincidencia de impedancia", mediante la asignación de clases y propiedades orientadas a objetos a tablas y columnas relacionales. En lugar de adoptar este enfoque tradicional, Entity Framework asigna las tablas relacionales, columnas y restricciones de clave externa en modelos lógicos a entidades y relaciones en modelos conceptuales. Esto permite una mayor flexibilidad tanto para definir objetos como para optimizar el modelo lógico. Las herramientas entity Data Model generan clases de datos extensibles basadas en el modelo conceptual. Estas clases son clases parciales que se pueden ampliar con miembros adicionales que agrega el desarrollador. De forma predeterminada, las clases que se generan para un modelo conceptual determinado derivan de clases base que proporcionan servicios para materializar entidades como objetos y para realizar el seguimiento y guardar los cambios. Los desarrolladores pueden usar estas clases para trabajar con las entidades y las relaciones como objetos relacionados con las asociaciones. Los desarrolladores también pueden personalizar las clases que se generan para un modelo conceptual. Para obtener más información, vea Trabajar con objetos.
Acceso y cambio de datos de entidad
Además de otra solución de asignación relacional de objetos, Entity Framework consiste fundamentalmente en permitir que las aplicaciones accedan a datos y cambien que se representan como entidades y relaciones en el modelo conceptual. Entity Framework usa información en los archivos de modelo y asignación para traducir consultas de objetos en tipos de entidad representados en el modelo conceptual en consultas específicas del origen de datos. Los resultados de la consulta se materializan en objetos administrados por Entity Framework. Entity Framework proporciona las siguientes maneras de consultar un modelo conceptual y devolver objetos:
LINQ to Entities. Proporciona compatibilidad Language-Integrated Query (LINQ) para consultar tipos de entidad definidos en un modelo conceptual. Para obtener más información, consulte LINQ to Entities.
Entity SQL. Dialecto independiente del almacenamiento de SQL que funciona directamente con entidades en el modelo conceptual y que admite conceptos de Entity Data Model. Entity SQL se usa tanto con consultas de objetos como con consultas de objetos que se ejecutan mediante el proveedor EntityClient. Para obtener más información, consulte Información general sobre Entity SQL.
Entity Framework incluye el proveedor de datos EntityClient. Este proveedor administra las conexiones, traduce las consultas de entidad en consultas específicas del origen de datos y devuelve un lector de datos que Entity Framework usa para materializar los datos de entidad en objetos. Cuando no se requiere la materialización de objetos, el proveedor EntityClient también se puede usar como un proveedor de datos estándar ADO.NET habilitando las aplicaciones para ejecutar consultas entity SQL y consumir el lector de datos de solo lectura devuelto. Para obtener más información, consulte Proveedor de EntityClient para Entity Framework.
En el diagrama siguiente se muestra la arquitectura de Entity Framework para acceder a los datos:
Entity Data Model Tools puede generar una clase derivada de System.Data.Objects.ObjectContext
o System.Data.Entity.DbContext
que representa el contenedor de entidades en el modelo conceptual. Este contexto de objeto proporciona las instalaciones para realizar el seguimiento de los cambios y administrar identidades, simultaneidad y relaciones. Esta clase también expone un SaveChanges
método que escribe inserciones, actualizaciones y eliminaciones en el origen de datos. Al igual que las consultas, estos cambios se realizan mediante comandos generados automáticamente por el sistema o por procedimientos almacenados especificados por el desarrollador.
Proveedores de datos
El EntityClient
proveedor amplía el modelo de proveedor de ADO.NET accediendo a los datos en términos de entidades y relaciones conceptuales. Ejecuta consultas que usan Entity SQL. Entity SQL proporciona el lenguaje de consulta subyacente que permite EntityClient
comunicarse con la base de datos. Para obtener más información, consulte Proveedor de EntityClient para Entity Framework.
Entity Framework incluye un proveedor de datos SqlClient actualizado que admite árboles de comandos canónicos. Para obtener más información, consulte SqlClient para Entity Framework.
Herramientas del modelo de datos de entidad
Junto con el entorno de ejecución de Entity Framework, Visual Studio incluye las herramientas de asignación y modelado. Para obtener más información, consulte Modelado y Mapeo.
Aprende más
Para más información sobre Entity Framework, consulte:
Introducción: proporciona información sobre cómo ponerse en marcha rápidamente mediante el inicio rápido, que muestra cómo crear una aplicación de Entity Framework sencilla.
Terminología de Entity Framework : define muchos de los términos introducidos por Entity Data Model y Entity Framework y que se usan en la documentación de Entity Framework.
Recursos de Entity Framework : proporciona vínculos a temas conceptuales y vínculos a temas y recursos externos para compilar aplicaciones de Entity Framework.