Komplexer Typcomplex type

Ein komplexen Typ ist eine Vorlage zum Definieren von umfangreichen, strukturierter Eigenschaften für Entitätstypen oder anderen komplexen Typen.A complex type is a template for defining rich, structured properties on entity types or on other complex types. Jede Vorlage enthält Folgendes:Each template contains the following:

  • Eine eindeutige Bezeichnung.A unique name. (erforderlich)(Required)

    Hinweis

    Der Name eines komplexen Typs darf nicht mit dem Namen eines Entitätstyps innerhalb des gleichen Namespace übereinstimmen.The name of a complex type cannot be the same as an entity type name within the same namespace.

  • Daten in Form einer oder mehreren Eigenschaften.Data in the form of one or more properties. (Optional)(Optional.)

    Hinweis

    Eine Eigenschaft eines komplexen Typs kann ein anderer komplexer Typ sein.A property of a complex type can be another complex type.

Ein komplexer Typ ähnelt insofern einem Entitätstyp, als ein komplexer Typ eine Datennutzlast in Form von primitiven Typeigenschaften oder anderen komplexen Typen enthalten kann.A complex type is similar to an entity type in that a complex type can carry a data payload in the form of primitive type properties or other complex types. Es gibt jedoch einige Hauptunterschiede zwischen komplexen Typen und Entitätstypen:However, there are some key differences between complex types and entity types:

  • Komplexe Typen weisen keine Identitäten auf und können daher nicht unabhängig sein.Complex types do not have identities and therefore cannot exist independently. Komplexe Typen können nur Eigenschaften von Entitätstypen oder anderen komplexen Typen sein.Complex types can only exist as properties on entity types or other complex types.

  • Komplexe Typen können nicht beteiligt Zuordnungen.Complex types cannot participate in associations. Enden einer Zuordnung kann einen komplexen Typ sein und aus diesem Grund Navigationseigenschaften kann nicht für komplexe Typen definiert werden.Neither end of an association can be a complex type, and therefore navigation properties cannot be defined on complex types.

BeispielExample

Die ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL) Bezeichnung konzeptionelle Schemadefinitionssprache (CSDL), konzeptionelle Modelle zu definieren.The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. Die folgende CSDL definiert einen komplexen Typ, Adress, mit den primitiven Typeigenschaften StreetAddress, City, StateOrProvince, Country und PostalCode.The following CSDL defines a complex type, Address, with the primitive type properties StreetAddress, City, StateOrProvince, Country, and 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 für einen Entitätstyp zu definieren.To define the complex type Address (above) as a property on an entity type, you must declare the property type in the entity type definition. Die folgende CSDL deklariert die Address-Eigenschaft als komplexen Typ für einen Entitätstyp (Publisher):The following CSDL declares the Address property as a complex type on an entity type (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>

Siehe auchSee also