Trabajar con objetos (Entity Framework)

Entity Framework permite consultar, insertar, actualizar y eliminar datos, expresados como objetos CLR (Common Language Runtime) con establecimiento de tipos que son instancias de tipos de entidad. Los tipos de entidad representan las entidades definidas en el modelo conceptual. Entity Framework asigna las entidades y las relaciones que se definen en un modelo conceptual a un origen de datos. Entity Framework proporciona los medios para realizar las siguientes acciones: materializar datos devueltos del origen de datos como objetos, realizar el seguimiento de los cambios que se realizaron a los objetos, controlar la simultaneidad, propagar los cambios de objeto de nuevo en el origen de datos y enlazar objetos a los controles. Puede utilizar LINQ to Entities, Lenguaje Entity SQL o Métodos del Generador de consultas (Entity Framework) para ejecutar consultas en el modelo conceptual. Para obtener más información, vea Consultar un modelo conceptual (Entity Framework).

La clase ObjectContext es la clase primaria para interactuar con los objetos entidad. Una instancia de la clase ObjectContext encapsula lo siguiente: una conexión a la base de datos, los metadatos que describen el modelo y un objeto ObjectStateManager que realiza el seguimiento de los objetos durante las operaciones de creación, actualización y eliminación. Para obtener más información, vea Resolución de identidades, administración de estados y seguimiento de cambios (Entity Framework).

Entity Framework proporciona herramientas que generan automáticamente un nivel de objetos basado en el modelo conceptual. El nivel de objetos incluye tipos de entidad y definiciones de contexto de objeto. La definición de contexto de objeto contiene una clase derivada ObjectContext que normalmente tiene un conjunto de propiedades que devuelven una colección de entidades del tipo especificado. Para generar el código del nivel de objetos, utilice Entity Data Model Designer (Entity Designer) o la herramienta de línea de comandos EdmGen.exe. Para obtener más información, vea Generated Code Overview.

Tipos de entidad

En Entity Framework , puede trabajar con tipos de entidad que derivan de EntityObject, tipos de objetos CLR "antiguos" (POCO), tipos de proxy POCO y tipos de entidad con seguimiento propio. Las siguientes secciones proporcionan información que puede ayudarle a decidir qué opción es adecuada, dada la naturaleza de su aplicación.

EntityObject

De forma predeterminada, las herramientas de ADO.NET Entity Data Model generan tipos de entidad derivados de EntityObject. Al trabajar con tipos derivados de EntityObject, el contexto de objetos administra las relaciones entre los objetos, realiza el seguimiento de los cambios a medida que se producen y admite la carga diferida de la manera más eficaz. Sin embargo, los tipos derivados de EntityObject tienen una fuerte dependencia de Entity Framework . Si trabaja con arquitecturas que requieren pasar por alto la persistencia (por ejemplo, desarrollo controlado por pruebas o desarrollo controlado por dominio) o dispone de clases de dominio existentes, puede utilizar POCO o proxies POCO.

POCO

Entity Framework permite utilizar objetos de dominio existentes junto con el modelo de datos sin realizar ninguna modificación en las clases de datos. Estas clases de datos POCO (también conocidas como objetos que omiten la persistencia) son compatibles con la mayoría de los comportamientos de consulta, inserción, actualización y eliminación que los tipos de entidad generados por las herramientas de Entity Data Model .

Cuando trabaja con tipos POCO, Entity Framework no realiza automáticamente el seguimiento de los cambios en el gráfico de objetos a medida que se producen. Entity Framework utiliza el mecanismo de instantánea para detectar los cambios en los objetos. Llame a DetectChanges para sincronizar el contexto de objetos con el gráfico. De forma predeterminada, el contexto de objetos llama a este método antes de guardar los datos en el origen de datos. Este mecanismo utiliza más memoria que el mecanismo de notificación instantánea y puede afectar al rendimiento, en especial si la aplicación requiere la detección frecuente de cambios. Para obtener más información, vea Realizar el seguimiento de los cambios en entidades POCO (Entity Framework). Para disponer de compatibilidad con la notificación instantánea, habilite la creación de objetos proxy de seguimiento de cambios.

Si desea aprovechar la carga diferida, debe habilitar la creación de proxies de carga diferida. Para obtener más información, vea la sección de proxy POCO, a continuación.

Proxy POCO

Utilice los proxies POCO si desea contar con la carga diferida y un seguimiento de cambios instantáneo y muy eficaz. Al utilizar proxies, dispone de la misma funcionalidad que los tipos derivados de EntityObject pero mantiene las clases de dominio separadas de Entity Framework . Para habilitar la creación de proxies de carga diferida y de proxies de seguimiento instantáneo de cambios, las clases POCO deben cumplir los requisitos descritos en el tema Requisitos para crear objetos proxy POCO (Entity Framework).

Los proxies se crean en tiempo de ejecución y heredan de los tipos POCO. Esto significa que el tipo en tiempo de ejecución de las entidades difiere del tipo POCO. Esto supone algunas complicaciones con la serialización. Para obtener más información, vea Trabajar con entidades POCO (Entity Framework). Observe que la creación de tipos proxy tiene alguna comparación en comparación con los tipos POCO.

Entidades de seguimiento propio

Los tipos derivados de EntityObject , POCO y los tipos de proxy POCO funcionan de forma adecuada en aplicaciones donde los objetos entidad se pueden adjuntar al contexto de objetos que controla el seguimiento de cambios. Sin embargo, si necesita transferir gráficos completos de entidades a un nivel donde el contexto de objetos no está disponible, debe decidir cómo realizar el seguimiento de cambios y notificar esos cambios al contexto de objetos. A partir de .NET Framework versión 4, las entidades de seguimiento propio pueden registrar cambios en propiedades escalares, complejas y de navegación. Las entidades con seguimiento propio no dependen de Entity Framework . La plantilla Generador de entidades de seguimiento propio de ADO.NET genera entidades con seguimiento propio. Para obtener más información, vea Trabajar con entidades de seguimiento propio.

Consideraciones de rendimiento

Las siguientes consideraciones de rendimiento también pueden ayudar a decidir qué tipos de objetos se adaptan mejor a su aplicación.

  • Al cargar metadatos, el costo de detectar tipos POCO o proxy es mayor que el de detectar tipos derivados de EntityObject con atributos.

  • La generación dinámica de tipos proxy POCO supone cierta sobrecarga.

  • La inicialización de tipos POCO supone menos sobrecarga que en los tipos proxy y derivados de EntityObject.

  • El seguimiento de instantáneas de POCO es más costoso que el seguimiento de notificación instantáneo.

En esta sección

Objetos de tipo complejo (Entity Framework)

Definir y administrar relaciones (Entity Framework)

Crear, agregar, modificar y eliminar objetos (Entity Framework)

Asociar y desasociar objetos (Entity Framework)

Resolución de identidades, administración de estados y seguimiento de cambios (Entity Framework)

Administrar conexiones y transacciones (Entity Framework)

Guardar los cambios y administrar la simultaneidad (Entity Framework)

Enlazar objetos a controles (Entity Framework)

Trabajar con claves de entidad (Entity Framework)

Serializar objetos (Entity Framework)

Trabajar con ObjectSet (Entity Framework)

Personalizar objetos (Entity Framework)

Vea también

Conceptos

Consultar un modelo conceptual (Entity Framework)
Tutorial rápido (Entity Framework)