Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un tipo complejo es una plantilla para definir propiedades enriquecidas y estructuradas en tipos de entidad o en otros tipos complejos. Cada plantilla contiene lo siguiente:
Un nombre único. (Requerido)
Nota:
El nombre de un tipo complejo no puede ser el mismo que un nombre de tipo de entidad dentro del mismo espacio de nombres.
Datos en forma de una o varias propiedades. (Opcional).
Nota:
Una propiedad de un tipo complejo puede ser otro tipo complejo.
Un tipo complejo es similar a un tipo de entidad en el que un tipo complejo puede llevar una carga de datos en forma de propiedades de tipo primitivo u otros tipos complejos. Sin embargo, hay algunas diferencias clave entre tipos complejos y tipos de entidad:
Los tipos complejos no tienen identidades y, por tanto, no pueden existir de forma independiente. Los tipos complejos solo pueden existir como propiedades en tipos de entidad u otros tipos complejos.
Los tipos complejos no pueden participar en asociaciones. Ninguno de los extremos de una asociación puede ser un tipo complejo y, por tanto, las propiedades de navegación no se pueden definir en tipos complejos.
Ejemplo
El ADO.NET Entity Framework usa un lenguaje específico del dominio (DSL) denominado lenguaje de definición de esquema conceptual (CSDL) para definir modelos conceptuales. El siguiente CSDL define un tipo complejo, Address, con las propiedades StreetAddress
de tipo primitivo , City
, StateOrProvince
, Country
y PostalCode
.
<ComplexType Name="Address" >
<Property Type="String" Name="StreetAddress" Nullable="false" />
<Property Type="String" Name="City" Nullable="false" />
<Property Type="String" Name="StateOrProvince" Nullable="false" />
<Property Type="String" Name="Country" Nullable="false" />
<Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>
Para definir el tipo Address
complejo (anterior) como una propiedad en un tipo de entidad, debe declarar el tipo de propiedad en la definición del tipo de entidad. El siguiente CSDL declara la Address
propiedad como un tipo complejo en un tipo de entidad (Publisher):
<EntityType Name="Publisher">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="BooksModel.Address" Name="Address" Nullable="false" />
<NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
FromRole="Publisher" ToRole="Book" />
</EntityType>