Introducción a Entity FrameworkEntity Framework overview

Entity FrameworkEntity Framework es un conjunto de tecnologías de ADO.NET que permiten el desarrollo de aplicaciones de software orientadas a datos.The Entity FrameworkEntity Framework is a set of technologies in ADO.NET that support the development of data-oriented software applications. Los arquitectos y programadores de aplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivos muy diferentes.Architects and developers of data-oriented applications have struggled with the need to achieve two very different objectives. Deben modelar las entidades, las relaciones y la lógica de los problemas empresariales que resuelven, y también deben trabajar con los motores de datos que se usan para almacenar y recuperar los datos.They must model the entities, relationships, and logic of the business problems they are solving, and they must also work with the data engines used to store and retrieve the data. 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 escribir un código de aplicación eficaz y fácil de mantener.The data may span multiple storage systems, each with its own protocols; even applications that work with a single storage system must balance the requirements of the storage system against the requirements of writing efficient and maintainable application code.

Entity FrameworkEntity Framework permite a los programadores trabajar con datos en forma de objetos y propiedades específicos del dominio, por ejemplo, con clientes y direcciones de clientes, sin tener que pensar en las tablas de las bases de datos subyacentes y en las columnas en las que se almacenan estos datos.The Entity FrameworkEntity Framework enables developers to work with data in the form of domain-specific objects and properties, such as customers and customer addresses, without having to concern themselves with the underlying database tables and columns where this data is stored. Con Entity FrameworkEntity Framework, los desarrolladores de software pueden trabajar en un nivel más alto de abstracción cuando tratan con datos, y puede crear y mantener aplicaciones orientadas a datos con menos código que en las aplicaciones tradicionales.With the Entity FrameworkEntity Framework, developers can work at a higher level of abstraction when they deal with data, and can create and maintain data-oriented applications with less code than in traditional applications. Dado que el Entity FrameworkEntity Framework es un componente de la .NET Framework.NET Framework, Entity FrameworkEntity Framework aplicaciones se pueden ejecutar en cualquier equipo en el que el .NET Framework.NET Framework comenzando con la versión 3.5 SP1 está instalado.Because the Entity FrameworkEntity Framework is a component of the .NET Framework.NET Framework, Entity FrameworkEntity Framework applications can run on any computer on which the .NET Framework.NET Framework starting with version 3.5 SP1 is installed.

Dar vida a los modelosGive life to models

Un enfoque de diseño habitual para crear una aplicación o un servicio consiste en dividir la aplicación o el servicio en tres partes: un modelo de dominio, un modelo lógico y un modelo físico.A longstanding and common design approach when building an application or service is the division of the application or service into three parts: a domain model, a logical model, and a physical model. El modelo de dominio define las entidades y relaciones del sistema que se está modelando.The domain model defines the entities and relationships in the system that is being modeled. El modelo lógico de una base de datos relacional normaliza las entidades y relaciones en tablas con restricciones de claves externas.The logical model for a relational database normalizes the entities and relationships into tables with foreign key constraints. El modelo físico abarca las capacidades de un motor de datos determinado especificando los detalles del almacenamiento en forma de particiones e índices.The physical model addresses the capabilities of a particular data engine by specifying storage details such as partitioning and indexing.

Los administradores de bases de datos refinan el modelo físico para mejorar el rendimiento, pero los programadores que escriben el código de la aplicación principalmente se limitan a trabajar con el modelo lógico escribiendo consultas SQL y llamando a procedimientos almacenados.The physical model is refined by database administrators to improve performance, but programmers writing application code primarily confine themselves to working with the logical model by writing SQL queries and calling stored procedures. 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 se explican en las primeras etapas de un proyecto, y a continuación se abandonan.Domain models are generally used as a tool for capturing and communicating the requirements of an application, frequently as inert diagrams that are viewed and discussed in the early stages of a project and then abandoned. Muchos equipos de desarrolladores omiten la creación de un modelo conceptual y comienzan especificando las tablas, columnas y claves en una base de datos relacional.Many development teams skip creating a conceptual model and begin by specifying tables, columns, and keys in a relational database.

El Entity FrameworkEntity Framework da vida a los modelos, permitiendo a los programadores consultar las entidades y relaciones en el modelo de dominio (llamado un conceptual modelo en el Entity FrameworkEntity Framework) apoyarse en la Entity FrameworkEntity Framework para traducirlos operaciones de comandos específicos del origen de datos.The Entity FrameworkEntity Framework gives life to models by enabling developers to query entities and relationships in the domain model (called a conceptual model in the Entity FrameworkEntity Framework) while relying on the Entity FrameworkEntity Framework to translate those operations to data source–specific commands. Esto libera a las aplicaciones de las dependencias codificadas de forma rígida en un origen de datos determinado.This frees applications from hard-coded dependencies on a particular data source.

Al trabajar con Code First, el modelo conceptual se asigna al modelo de almacenamiento en código.When working with Code First, the conceptual model is mapped to the storage model in code. Entity FrameworkEntity Framework puede deducir el modelo conceptual basado en los tipos de objeto y configuraciones adicionales que define.The Entity FrameworkEntity Framework can infer the conceptual model based on the object types and additional configurations that you define. Los metadatos de asignación se generan durante el tiempo de ejecución basándose en una combinación de cómo se definen los tipos de dominio e información de configuración adicional que se proporciona en código.The mapping metadata is generated during run time based on a combination of how you defined your domain types and additional configuration information that you provide in code. Entity FrameworkEntity Framework genera la base de datos como sea necesario basándose en los metadatos. generates the database as needed based on the metadata. Para obtener más información, consulte crear y asignar un modelo Conceptual.For more information, see Creating and Mapping a Conceptual Model.

Cuando se trabaja con las Herramientas de Entity Data Model, 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:When working with the Entity Data Model Tools, the conceptual model, the storage model, and the mappings between the two are expressed in XML-based schemas and defined in files that have corresponding name extensions:

  • El lenguaje de definición de esquemas conceptuales (CSDL) define el modelo conceptual.Conceptual schema definition language (CSDL) defines the conceptual model. CSDL es la Entity FrameworkEntity Frameworkde implementación de la Entity Data Model.CSDL is the Entity FrameworkEntity Framework's implementation of the Entity Data Model. La extensión de archivo es .csdl.The file extension is .csdl.

  • El lenguaje de definición de esquemas de almacenamiento (SSDL) define el modelo de almacenamiento, que también se denomina modelo lógico.Store schema definition language (SSDL) defines the storage model, which is also called the logical model. La extensión de archivo es .ssdl.The file extension is .ssdl.

  • El lenguaje de especificación de asignaciones (MSL) define las asignaciones entre los modelos conceptual y de almacenamiento.Mapping specification language (MSL) defines the mappings between the storage and conceptual models. La extensión de archivo es .msl.The file extension is .msl.

El modelo de almacenamiento y las asignaciones pueden cambiar según sea necesario sin requerir cambios en el modelo conceptual, las clases de datos o el código de la aplicación.The storage model and mappings can change as needed without requiring changes to the conceptual model, data classes, or application code. Dado que los modelos de almacenamiento son específicos del proveedor, puede trabajar con un modelo conceptual coherente a través de varios orígenes de datos.Because storage models are provider-specific, you can work with a consistent conceptual model across various data sources.

El Entity FrameworkEntity Framework utiliza estos modelos y asignación de archivos para crear, leer, actualizar y eliminar operaciones con entidades y relaciones en el modelo conceptual a las operaciones equivalentes en el origen de datos.The Entity FrameworkEntity Framework uses these model and mapping files to create, read, update, and delete operations against entities and relationships in the conceptual model to equivalent operations in the data source. El Entity FrameworkEntity Framework incluso permite asignar las entidades del modelo conceptual a procedimientos almacenados en el origen de datos.The Entity FrameworkEntity Framework even supports mapping entities in the conceptual model to stored procedures in the data source. Para obtener más información, consulte CSDL, SSDL y MSL especificaciones.For more information, see CSDL, SSDL, and MSL Specifications.

Asignación de objetos a datosMap objects to data

La programación orientada a objetos supone un desafío al interactuar con sistemas de almacenamiento de datos.Object-oriented programming poses a challenge for interacting with data storage systems. Aunque la organización de clases suele reflejar la organización de las tablas de bases de datos relacionales, el ajuste no es perfecto.Although the organization of classes frequently mirrors the organization of relational database tables, the fit is not perfect. Varias tablas normalizadas suelen corresponder a una sola clase y las relaciones entre las clases se representan a menudo de forma diferente a las relaciones entre tablas.Multiple normalized tables frequently correspond to a single class, and relationships between classes are often represented differently than relationships between tables are represented. Por ejemplo, para representar el cliente de un pedido de ventas, una clase Order podría utilizar una propiedad que contiene una referencia a una instancia de una clase Customer, mientras que una fila de la tabla Order en una base de datos contiene una columna de clave externa con un valor que corresponde a un valor de clave principal en la tabla Customer (o conjunto de columnas).For example, to represent the customer for a sales order, an Order class might use a property that contains a reference to an instance of a Customer class, while an Order table row in a database contains a foreign key column (or set of columns) with a value that corresponds to a primary key value in the Customer table. Una clase Customer podría tener una propiedad denominada Orders que contuviera una colección de instancias de la clase Order, mientras que la tabla Customer en una base de datos no tiene ninguna columna comparable.A Customer class might have a property named Orders that contains a collection of instances of the Order class, while the Customer table in a database has no comparable column. Entity FrameworkEntity Framework proporciona a los desarrolladores de software la flexibilidad para representar las relaciones de esta manera, o para modelar más estrechamente las relaciones tal como se representan en la base de datos.The Entity FrameworkEntity Framework provides developers with the flexibility to represent relationships in this way, or to more closely model relationships as they are represented in the database.

Las soluciones existentes han intentado cubrir este hueco, que se suele denominar "desigualdad de impedancia", asignando únicamente clases y propiedades orientadas a objetos a las tablas y columnas relacionales.Existing solutions have tried to bridge this gap, which is frequently called an "impedance mismatch", by only mapping object-oriented classes and properties to relational tables and columns. En lugar de seguir este enfoque tradicional, el Entity FrameworkEntity Framework asigna tablas relacionales, columnas y restricciones de clave externa en los modelos lógicos a las entidades y relaciones en los modelos conceptuales.Instead of taking this traditional approach, the Entity FrameworkEntity Framework maps relational tables, columns, and foreign key constraints in logical models to entities and relationships in conceptual models. Esto permite una mayor flexibilidad al definir los objetos y optimizar el modelo lógico.This enables greater flexibility both in defining objects and optimizing the logical model. Las herramientas de Entity Data ModelEntity Data Model generan clases de datos extensibles según el modelo conceptual.The Entity Data ModelEntity Data Model tools generate extensible data classes based on the conceptual model. Se trata de clases parciales que se pueden extender con miembros adicionales que el programador agrega.These classes are partial classes that can be extended with additional members that the developer adds. De forma predeterminada, las clases que se generan para un modelo conceptual determinado derivan de las clases base que proporcionan servicios para materializar las entidades como objetos y para realizar un seguimiento de los cambios y guardarlos.By default, the classes that are generated for a particular conceptual model derive from base classes that provide services for materializing entities as objects and for tracking and saving changes. Los desarrolladores pueden utilizar estas clases para trabajar con las entidades y relaciones como objetos relacionados mediante asociaciones.Developers can use these classes to work with the entities and relationships as objects related by associations. Los desarrolladores también pueden personalizar las clases que se generan para un modelo conceptual.Developers can also customize the classes that are generated for a conceptual model. Para obtener más información, consulte trabajar con objetos.For more information, see Working with Objects.

Acceso y cambiar datos de la entidadAccess and change entity data

Como algo más que otra solución de asignación objeto-relacional, Entity FrameworkEntity Framework trata fundamentalmente de permitir que las aplicaciones obtengan acceso y cambien los datos que están representados como entidades y relaciones en el modelo conceptual.More than just another object-relational mapping solution, the Entity FrameworkEntity Framework is fundamentally about enabling applications to access and change data that is represented as entities and relationships in the conceptual model. Entity FrameworkEntity Framework usa la información de los archivos del modelo y de asignación para traducir las consultas de objeto con los tipos de entidad que se representan en el modelo conceptual en consultas específicas del origen de datos.The Entity FrameworkEntity Framework uses information in the model and mapping files to translate object queries against entity types represented in the conceptual model into data source-specific queries. Resultados de la consulta se materializan en objetos que el Entity FrameworkEntity Framework administra.Query results are materialized into objects that the Entity FrameworkEntity Framework manages. El Entity FrameworkEntity Framework proporciona los siguientes métodos para consultar un modelo conceptual y devolver objetos:The Entity FrameworkEntity Framework provides the following ways to query a conceptual model and return objects:

  • LINQ to EntitiesLINQ to Entities.. Proporciona compatibilidad con Language-Integrated Query (LINQ) para consultar los tipos de entidad que se definen en un modelo conceptual.Provides Language-Integrated Query (LINQ) support for querying entity types that are defined in a conceptual model. Para obtener más información, consulte LINQ to Entities.For more information, see LINQ to Entities.

  • Entity SQLEntity SQL.. Un dialecto independiente del almacenamiento de SQL que trabaja directamente con entidades en el modelo conceptual y que admite Entity Data ModelEntity Data Model conceptos.A storage-independent dialect of SQL that works directly with entities in the conceptual model and that supports Entity Data ModelEntity Data Model concepts. Entity SQLEntity SQL se utiliza con las consultas de objeto y las consultas que se ejecutan con el proveedor de EntityClient. is used both with object queries and queries that are executed by using the EntityClient provider. Para obtener más información, consulte información general de Entity SQL.For more information, see Entity SQL Overview.

El Entity FrameworkEntity Framework incluye el proveedor de datos de EntityClient.The Entity FrameworkEntity Framework includes the EntityClient data provider. 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 FrameworkEntity Framework usa para materializar los datos de la entidad en los objetos.This provider manages connections, translates entity queries into data source-specific queries, and returns a data reader that the Entity FrameworkEntity Framework uses to materialize entity data into objects. Cuando no se requiere la materialización de objetos, el proveedor de EntityClient también se puede usar como un estándar ADO.NETADO.NET proveedor de datos habilitando las aplicaciones se ejecuten Entity SQLEntity SQL consultas y usar el lector de datos de solo lectura devuelto.When object materialization is not required, the EntityClient provider can also be used like a standard ADO.NETADO.NET data provider by enabling applications to execute Entity SQLEntity SQL queries and consume the returned read-only data reader. Para obtener más información, consulte proveedor de EntityClient para Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

El diagrama siguiente muestra la arquitectura de Entity FrameworkEntity Framework para el acceso a datos:The following diagram illustrates the Entity FrameworkEntity Framework architecture for accessing data:

Diagrama de arquitectura de Entity FrameworkEntity Framework Architectural Diagram

Las herramientas de Entity Data ModelEntity Data Model pueden generar una clase derivada de System.Data.Objects.ObjectContext o System.Data.Entity.DbContext que representa el contenedor de entidades definido en el modelo conceptual.The Entity Data ModelEntity Data Model Tools can generate a class derived from System.Data.Objects.ObjectContext or System.Data.Entity.DbContext that represents the entity container in the conceptual model. Este contexto del objeto proporciona los medios para realizar el seguimiento de los cambios y administrar las identidades, la simultaneidad y las relaciones.This object context provides the facilities for tracking changes and managing identities, concurrency, and relationships. Esta clase también expone un método SaveChanges que escribe las inserciones, actualizaciones y eliminaciones en el origen de datos.This class also exposes a SaveChanges method that writes inserts, updates, and deletes to the data source. Al igual que las consultas, estas modificaciones son realizadas bien por los comandos que el sistema genera automáticamente o bien por los procedimientos almacenados que el programador especifica.Like queries, these changes are either made by commands automatically generated by the system or by stored procedures that are specified by the developer.

Proveedores de datosData providers

El proveedor EntityClient extiende el modelo de proveedor de ADO.NETADO.NET teniendo acceso a los datos en lo que respecta a las entidades conceptuales y relaciones.The EntityClient provider extends the ADO.NETADO.NET provider model by accessing data in terms of conceptual entities and relationships. Ejecuta consultas que utilizan Entity SQLEntity SQL.It executes queries that use Entity SQLEntity SQL. Entity SQLEntity SQL proporciona el lenguaje de consultas subyacente que permite a EntityClient comunicarse con la base de datos. provides the underlying query language that enables EntityClient to communicate with the database. Para obtener más información, consulte proveedor de EntityClient para Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Entity FrameworkEntity Framework incluye un proveedor de datos SqlClient actualizado que admite los árboles de comandos canónicos.The Entity FrameworkEntity Framework includes an updated SqlClient Data Provider that supports canonical command trees. Para obtener más información, consulte SqlClient para Entity Framework.For more information, see SqlClient for the Entity Framework.

Herramientas de Entity data modelEntity data model tools

Junto con el Entity FrameworkEntity Framework en tiempo de ejecución, Visual Studio incluye la asignación y las herramientas de modelado.Together with the Entity FrameworkEntity Framework runtime, Visual Studio includes the mapping and modeling tools. Para obtener más información, consulte modelado y asignación.For more information, see Modeling and Mapping.

Más informaciónLearn more

Para obtener más información sobre la Entity FrameworkEntity Framework, consulte:To learn more about the Entity FrameworkEntity Framework, see:

Introducción a : proporciona información sobre cómo ponerse en marcha y manejarse rápidamente con la Quickstart, que muestra cómo crear una sencilla Entity FrameworkEntity Framework aplicación.Getting Started - Provides information about how to get up and running quickly using the Quickstart, which shows how to create a simple Entity FrameworkEntity Framework application.

Terminología de Entity Framework -define muchos de los términos que se presentan por el Entity Data Model y el Entity FrameworkEntity Framework y que se usan en Entity FrameworkEntity Framework documentación.Entity Framework Terminology - Defines many of the terms that are introduced by the Entity Data Model and the Entity FrameworkEntity Framework and that are used in Entity FrameworkEntity Framework documentation.

Recursos de Entity Framework : proporciona vínculos a temas conceptuales y vínculos a temas externos y recursos para la creación del Entity FrameworkEntity Framework aplicaciones.Entity Framework Resources - Provides links to conceptual topics and links to external topics and resources for building Entity FrameworkEntity Framework applications.

Vea tambiénSee also