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:
Debe definir el tipo complejo como class.
Los cambios en los miembros de la instancia del tipo complejo siempre se detectan a través del método de instantánea. Para obtener más información, vea Realizar el seguimiento de los cambios en entidades POCO (Entity Framework).
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