Objetos de tipos complejos (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. Un tipo complejo no puede existir sin un tipo complejo o entidad primarios. Dado que los tipos complejos no tienen claves, los Servicios de objeto no pueden administrar los objetos de tipo complejo excepto el objeto primario. Para obtener más información, vea Tipo complejo (EDM).

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 crear y ejecutar consultas de objeto con 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.

  • Las instancias de los objetos complejos que heredan de la clase ComplexObject se crean cuando se tiene acceso a la propiedad de tipo complejo y no al crearse la instancia del objeto primario.

  • Cuando una clase de datos personalizada hereda de la clase EntityObject, las clases de tipos complejos deben heredar de la clase ComplexObject.

  • Puede utilizar tipos complejos al implementar interfaces de clases de datos personalizadas, como IEntityWithKey. Sin embargo, para utilizar tipos complejos con clases de datos personalizadas se recomienda heredar de las clases EntityObject y ComplexObject. Para obtener más información, vea Personalizar objetos (Entity Framework).

Vea también

Otros recursos

Trabajar con objetos (Entity Framework)