Objetos de tipo complejo (Entity Framework)

Los tipos complejos son propiedades no escalares de tipos de entidad que permiten organizar las propiedades escalares dentro de las entidades. Al igual que las entidades, los tipos complejos están compuestos de propiedades escalares u otras propiedades de tipos complejos. Dado que los tipos complejos no tienen claves, Entity Framework no pueden administrar los objetos de tipo complejo excepto el objeto primario. Para obtener más información, vea ComplexType (Elemento) (CSDL).

Cuando las herramientas de Entity Framework generan objetos que representan tipos de entidad, estos objetos heredan de la clase EntityObject. Igualmente, los objetos generados para tipos complejos heredan de la clase ComplexObject. Ambas clases heredan de la clase base StructuralObject. A las propiedades escalares de los objetos de tipo complejo se puede tener acceso igual que a otras propiedades escalares. Para obtener más información, vea Cómo: Consultar tipos complejos (Entity Framework).

Al trabajar con objetos que representan tipos complejos, tenga en cuenta las cuestiones siguientes:

  • Las propiedades de tipos complejos no pueden ser null. Se produce una excepción InvalidOperationException cuando se llama a SaveChanges y se encuentra un objeto complejo null. Al igual que las propiedades escalares de entidades, las propiedades escalares de objetos complejos pueden ser null.

  • Los tipos complejos no pueden heredar de otros tipos complejos.

  • Cuando alguna propiedad se cambia en alguna parte del gráfico de objetos de un tipo complejo, la propiedad del tipo primario se marca como cambiada y todas las propiedades del gráfico de objetos del tipo complejo se actualizan al llamar a SaveChanges.

  • Cuando el nivel de objeto se genera mediante las herramientas de Entity Data Model , se crean instancias de los objetos complejos cuando se tiene acceso a la propiedad de tipo complejo y no al crearse la instancia del objeto primario.

Al trabajar con tipos POCO (objetos CLR "antiguos") que contienen propiedades de tipo complejo, también se aplican las siguientes consideraciones:

En los siguientes temas se muestra cómo realizar varias tareas que implican los tipos complejos con ADO.NET Entity Data Model Designer:

How to: Create and Modify Complex Types

How to: Add a Complex Type Property to an Entity

How to: Refactor Existing Properties into a Complex type Property

How to: Map Complex Type Properties to Table Columns

How to: Map a Function Import to a Complex Type

Vea también

Conceptos

Trabajar con objetos (Entity Framework)