ComplexType-Element (CSDL)
Ein ComplexType-Element definiert eine aus EdmSimpleType-Eigenschaften oder anderen komplexen Typen bestehende Datenstruktur. Weitere Informationen über den EdmSimpleType finden Sie unter Konzeptionelle Modelltypen. Ein komplexer Typ kann eine Eigenschaft eines Entitätstyps oder eines anderen komplexen Typs sein. Ein komplexer Typ entspricht einem Entitätstyp, in dem von einem komplexen Typ Daten definiert werden. Es gibt jedoch einige Hauptunterschiede zwischen komplexen Typen und Entitätstypen:
Komplexe Typen weisen keine Identitäten (oder Schlüssel) auf und können daher nicht unabhängig sein. Komplexe Typen können nur Eigenschaften von Entitätstypen oder anderen komplexen Typen sein.
Komplexe Typen können nicht Teile von Zuordnungen sein. Die Enden einer Zuordnung können kein komplexer Typ sein, daher können Navigationseigenschaften nicht für komplexe Typen definiert werden.
Einer komplexen Typeigenschaft kann kein NULL-Wert zugewiesen werden, obwohl jede skalare Eigenschaft eines komplexen Typs auf NULL festgelegt werden kann.
Ein ComplexType-Element kann die folgenden untergeordneten Elemente aufweisen (der vorliegenden Reihenfolge entsprechend):
Dokumentation (kein (null) oder ein Element)
Property (0 (null) oder mehr Elemente)
Anmerkungselemente (kein Element (null) oder mehrere Elemente)
In der folgenden Tabelle werden die Attribute beschrieben, die für das ComplexType-Element übernommen werden können.
Attributname | Ist erforderlich | Wert |
---|---|---|
Name |
Ja |
Der Name des komplexen Typs. Der Name eines komplexen Typs darf nicht dem Namen anderer komplexer Typen, Entitätstypen oder Zuordnungen entsprechen, die sich innerhalb des Bereichs des Modells befinden. |
BaseType |
Nein |
Der Name eines anderen komplexen Typs, der der Basistyp des zu definierenden komplexen Typs ist.
Hinweis:
Dieses Attribut ist in der vom Namespace "https://schemas.microsoft.com/ado/2006/04/edm" angegebenen CSDL-Version nicht anwendbar.Für komplexe Typen wird Vererbung in dieser Version nicht unterstützt.
|
Abstract |
Nein |
Abhängig davon, ob der komplexe Typ ein abstrakter Typ ist oder nicht, gilt True oder False (der Standardwert).
Hinweis:
Dieses Attribut ist in der vom Namespace "https://schemas.microsoft.com/ado/2006/04/edm" angegebenen CSDL-Version nicht anwendbar.Komplexe Typen in dieser Version können keine abstrakten Typen sein.
|
Hinweis: |
---|
Eine beliebige Anzahl von Anmerkungsattributen (benutzerdefinierte XML-Attribute) kann für das ComplexType-Element übernommen werden.Benutzerdefinierte Attribute dürfen jedoch zu keinem XML-Namespace gehören, der für CSDL reserviert ist.Die vollqualifizierten Namen für zwei benutzerdefinierte Attribute dürfen nicht übereinstimmen. |
Beispiel
Das folgende Beispiel zeigt den komplexen Typ Address mit den EdmSimpleType-Eigenschaften StreetAddress, City, StateOrProvince, Country und 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>
Deklarieren Sie den Eigenschaftentyp in der Entitätstypdefinition, um den komplexen Typ Address (oben) als Eigenschaft eines Entitätstyps zu definieren. Im folgenden Beispiel wird die Address-Eigenschaft als komplexer Typ für einen Entitätstyp (Publisher) veranschaulicht:
<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>
Siehe auch
Konzepte
Übersicht über das Entity Framework
CSDL-Spezifikation
Schema-Element (CSDL)
EntityType-Element (CSDL)
Objekte komplexer Typen (Entity Framework)
Weitere Ressourcen
CSDL-, SSDL- und MSL-Spezifikationen
ADO.NET Entity Data Model Tools
complex type (Entity Data Model)