Entity Framework - Arquitectura
La arquitectura de Entity Framework, de abajo hacia arriba, consta de lo siguiente:
Proveedores de datos
Estos son proveedores específicos de la fuente, que abstraen las interfaces ADO.NET para conectarse a la base de datos al programar contra el esquema conceptual.
Traduce los lenguajes SQL comunes como LINQ a través del árbol de comandos a la expresión SQL nativa y lo ejecuta contra el sistema DBMS específico.
Cliente de entidad
Esta capa expone la capa de la entidad a la capa superior. Entity client ofrece a los desarrolladores la capacidad de trabajar con entidades en forma de filas y columnas mediante consultas de entidad SQL sin la necesidad de generar clases para representar el esquema conceptual. Entity Client muestra las capas del marco de la entidad, que son la funcionalidad principal. Estas capas se denominan Entity Data Model.
los Storage Layer contiene el esquema completo de la base de datos en formato XML.
los Entity Layer que también es un archivo XML que define las entidades y relaciones.
los Mapping layer es un archivo XML que mapea las entidades y relaciones definidas en la capa conceptual con relaciones reales y tablas definidas en la capa lógica.
los Metadata services que también está representado en Entity Client proporciona una API centralizada para acceder a los metadatos almacenados en capas de Entity, Mapping y Storage.
Servicio de objetos
La capa de servicios de objeto es el contexto de objeto, que representa la sesión de interacción entre las aplicaciones y la fuente de datos.
El uso principal del contexto de objeto es realizar diferentes operaciones como agregar, eliminar instancias de entidades y guardar el estado cambiado en la base de datos con la ayuda de consultas.
Es la capa ORM de Entity Framework, que representa el resultado de los datos en las instancias de objeto de las entidades.
Estos servicios permiten al desarrollador utilizar algunas de las funciones de ORM enriquecidas, como el mapeo de claves primarias, el seguimiento de cambios, etc. escribiendo consultas utilizando LINQ y Entity SQL.