Schema-Element (CSDL)

Das Schema-Element ist das Stammelement einer konzeptionellen Modelldefinition.Es enthält Definitionen für die Objekte, Funktionen und Container, die ein konzeptionelles Modell bilden.

Das Schema-Element kann keine oder (null) oder mehrere der folgenden untergeordneten Elemente enthalten:

Ein Schema-Element kann kein (null) oder ein Anmerkungselement enthalten.

Hinweis

Das Function-Element und Anmerkungselemente sind nur für konzeptionelle Modelle für Anwendungen zulässig, die auf .NET Framework, Version 4 oder später, abzielen.Der XML-Namespace für diese Modelle ist https://schemas.microsoft.com/ado/2008/09/edm.

Das Schema-Element definiert mithilfe des Namespace-Attributs den Namespace für den Entitätstyp, den komplexen Typ und die Zuordnungsobjekte in einem konzeptionellen Modell.Innerhalb eines Namespace müssen alle Objekte eine eindeutige Bezeichnung aufweisen.Namespaces können mehrere Schema-Elemente und mehrere CSDL-Dateien umfassen.

Ein Namespace in einem konzeptionellen Modell unterscheidet sich vom XML-Namespace des Schema-Elements.Ein Namespace in einem konzeptionellen Modell (wie vom Namespace-Attribut definiert) ist ein logischer Container für Entitätstypen, komplexe Typen und Zuordnungstypen.Der XML-Namespace (vom xmlns-Attribut angegeben) eines Schema-Elements ist der Standardnamespace für untergeordnete Elemente und Attribute des Schema-Elements.XML-Namespaces im Format "https://schemas.microsoft.com/ado/YYYY/MM/edm" sind für CSDL reserviert, wobei "YYYY" und "MM" das Jahr und den Monat darstellen.Benutzerdefinierte Elemente und Attribute können nicht in Namespaces mit diesem Format vorhanden sein.

Anwendbare Attribute

In der folgenden Tabelle werden die Attribute beschrieben, die für das Schema-Element übernommen werden können.

Attributname

Ist erforderlich

Wert

Namespace

Ja

Der Namespace für das konzeptionelle Modell.Der Wert des Namespace-Attributs wird verwendet, um den vollqualifizierten Namen eines Typs zu bilden.Befindet sich z. B. ein EntityType mit dem Namen Customer im Simple.Example.Model-Namespace, dann lautet der vollqualifizierte Name von EntityType "SimpleExampleModel.Customer".

Die folgenden Zeichenfolgen können nicht als Wert für das Namespace-Attribut verwendet werden: System, Transient oder Edm.Der Wert für das Namespace-Attribut darf nicht mit dem Wert für das Namespace-Attribut im SSDL Schema-Element übereinstimmen.

Alias

Nein

Ein anstelle der Namespacebezeichnung verwendeter Bezeichner.Befindet sich zum Beispiel ein EntityType mit dem Namen Customer im Simple.Example.Model-Namespace und wird für den Wert des Alias-Attributs Model eingetragen, dann kann "Model.Customer" als vollqualifizierter Name für EntityType. verwendet werden.

Hinweis

Eine beliebige Anzahl von Anmerkungsattributen (benutzerdefinierte XML-Attribute) kann für das Schema-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 ein Schema-Element, das ein EntityContainer-Element, zwei EntityType-Elemente und ein Association-Element.

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

Siehe auch

Konzepte

Übersicht über das Entity Framework

CSDL-Spezifikation

Andere Ressourcen

CSDL-, SSDL- und MSL-Spezifikationen

ADO.NET Entity Data Model Tools