Schema-Element (SSDL)

Das Schema-Element der Datenspeicherschema-Definitionssprache (Store Schema Definition Language, SSDL) ist das Stammelement einer Speichermodelldefinition. Es enthält Definitionen für die Objekte, Funktionen und Container, die zusammen ein Speichermodell bilden.

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

Das Schema-Element definiert mithilfe des Namespace-Attributs den Namespace für den Entitätstyp, den komplexen Typ und die Zuordnungsobjekte in einem Speichermodell. Innerhalb eines Namespace müssen alle Objekte eine eindeutige Bezeichnung aufweisen.

Ein Namespace für ein Speichermodell unterscheidet sich vom XML-Namespace des Schema-Elements. Ein Namespace für ein Speichermodell (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/ssdl sind für SSDL 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 Speichermodell. Der Wert des Namespace-Attributs wird verwendet, um den vollqualifizierten Namen eines Typs zu bilden. Befindet sich beispielsweise ein EntityType mit dem Namen Customer im Simple.Example.Model-Namespace, dann lautet der vollqualifizierte Name des 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 CSDL 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 StorageModel eingetragen, dann kann StorageModel.Customer als voll qualifizierter Name für den EntityType. verwendet werden.

Provider

Ja

Der Datenanbieter. Weitere Informationen finden Sie unter Entity Framework-Datenanbieter.

ProviderManifestToken

Ja

Ein Token, das dem Anbieter angibt, welches Anbietermanifest zurückgegeben werden soll. Für das Token ist kein Format definiert. Die für das Token möglichen Werte werden vom Anbieter definiert. Weitere Informationen zu den SQL Server-Anbietermanifesttoken finden Sie unter .NET Framework-Datenanbieter für SQL Server (SqlClient) für das Entity Framework.

Beispiel

Das folgende Beispiel zeigt ein Schema-Element, das ein EntityContainer-Element, zwei EntityType-Elemente und ein Association-Element enthält.

<Schema Namespace="ExampleModel.Store" 
      Alias="Self" Provider="System.Data.SqlClient" 
      ProviderManifestToken="2008" 
      xmlns="https://schemas.microsoft.com/ado/2009/02/edm/ssdl">
  <EntityContainer Name="ExampleModelStoreContainer">
    <EntitySet Name="Customers" 
               EntityType="ExampleModel.Store.Customers" 
               Schema="dbo" />
    <EntitySet Name="Orders" 
               EntityType="ExampleModel.Store.Orders" 
               Schema="dbo" />
    <AssociationSet Name="FK_CustomerOrders" 
                    Association="ExampleModel.Store.FK_CustomerOrders">
      <End Role="Customers" EntitySet="Customers" />
      <End Role="Orders" EntitySet="Orders" />
    </AssociationSet>
  </EntityContainer>
  <EntityType Name="Customers">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
  </EntityType>
  <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="int" Nullable="false" 
              c:CustomAttribute="someValue"/>
    <Property Name="ProductId" Type="int" Nullable="false" />
    <Property Name="Quantity" Type="int" Nullable="false" />
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <c:CustomElement>
      Custom data here.
    </c:CustomElement>
  </EntityType>
  <Association Name="FK_CustomerOrders">
    <End Role="Customers" 
         Type="ExampleModel.Store.Customers" Multiplicity="1">
      <OnDelete Action="Cascade" />
    </End>
    <End Role="Orders" 
         Type="ExampleModel.Store.Orders" Multiplicity="*" />
    <ReferentialConstraint>
      <Principal Role="Customers">
        <PropertyRef Name="CustomerId" />
      </Principal>
      <Dependent Role="Orders">
        <PropertyRef Name="CustomerId" />
      </Dependent>
    </ReferentialConstraint>
  </Association>
  <Function Name="UpdateOrderQuantity" 
            Aggregate="false" 
            BuiltIn="false" 
            NiladicFunction="false" 
            IsComposable="false" 
            ParameterTypeSemantics="AllowImplicitConversion" 
            Schema="dbo">
    <Parameter Name="orderId" Type="int" Mode="In" />
    <Parameter Name="newQuantity" Type="int" Mode="In" />
  </Function>
  <Function Name="UpdateProductInOrder" IsComposable="false">
    <CommandText>
      UPDATE Orders
      SET ProductId = @productId
      WHERE OrderId = @orderId;
    </CommandText>
    <Parameter Name="productId"
               Mode="In"
               Type="int"/>
    <Parameter Name="orderId"
               Mode="In"
               Type="int"/>
  </Function>
</Schema>

Siehe auch

Konzepte

Übersicht über das Entity Framework
SSDL-Spezifikation

Weitere Ressourcen

CSDL-, SSDL- und MSL-Spezifikationen
ADO.NET Entity Data Model Tools