Freigeben über


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 (CSDL).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):

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.

HinweisHinweis
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).

HinweisHinweis
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)

Komplexer Typ

EntityType-Element (CSDL)

Andere Ressourcen

CSDL-, SSDL- und MSL-Spezifikationen

ADO.NET Entity Data Model Tools

Complex Type Objects