complex type
Een complex type is een sjabloon voor het definiëren van uitgebreide, gestructureerde eigenschappen voor entiteitstypen of andere complexe typen. Elke sjabloon bevat het volgende:
Een unieke naam. (Verplicht)
Notitie
De naam van een complex type mag niet hetzelfde zijn als de naam van een entiteitstype binnen dezelfde naamruimte.
Gegevens in de vorm van een of meer eigenschappen. (Optioneel.)
Notitie
Een eigenschap van een complex type kan een ander complex type zijn.
Een complex type is vergelijkbaar met een entiteitstype waarin een complex type een nettolading van gegevens kan bevatten in de vorm van primitieve typeeigenschappen of andere complexe typen. Er zijn echter enkele belangrijke verschillen tussen complexe typen en entiteitstypen:
Complexe typen hebben geen identiteiten en kunnen daarom niet onafhankelijk bestaan. Complexe typen kunnen alleen bestaan als eigenschappen voor entiteitstypen of andere complexe typen.
Complexe typen kunnen niet deelnemen aan koppelingen. Geen van beide uiteinden van een koppeling kan een complex type zijn en daarom kunnen navigatie-eigenschappen niet worden gedefinieerd voor complexe typen.
Opmerking
De ADO.NET Entity Framework maakt gebruik van een domeinspecifieke taal (DSL) genaamd conceptuele schemadefinitietaal (CSDL) om conceptuele modellen te definiëren. De volgende CSDL definieert een complex type, Adres, met de primitieve typeeigenschappen , , , en PostalCode
Country
. StateOrProvince
City
StreetAddress
<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>
Als u het complexe type Address
(hierboven) wilt definiëren als een eigenschap voor een entiteitstype, moet u het eigenschapstype in de definitie van het entiteitstype declareren. De volgende CSDL declareert de Address
eigenschap als een complex type voor een entiteitstype (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>