Freigeben über


Speichermetadatenschema (SSDL)

Das Speichermetadatenschema ist eine formale Beschreibung der Datenbank, in der die Daten für eine auf dem Entitätsdatenmodell (EDM) aufbauende Anwendung gespeichert werden. Die in diesem Schema deklarierten Entitäten und Zuordnungen bilden die Basis für das Mapping von Entitäten und Zuordnungen im konzeptionellen Schema zu den entsprechenden Entitäten im Speichermodell.

Eine in der Datenspeicherschema-Definitionssprache (Store Schema Definition Language, SSDL) deklarierte Entität ähnelt einer Entität in der konzeptionellen Schemadefinitionssprache (Conceptual Schema Definition Language, CSDL). Der Unterschied liegt hauptsächlich in den Datentypen, die in SSDL-Deklarationen verwendet werden. Bei den in SSDL-Dateien deklarierten Datentypen von Eigenschaften handelt es sich um die Datentypen des Speichermodells. Datentypen in CSDL-Dateien sind einfache, durch das EDM definierte Typen. Das Mapping zwischen diesen Typen ist eine der Funktionen des EDM. Weitere Informationen zu den in CSDL und SSDL verwendeten Datentypen finden Sie unter Einfache Typen (EDM).

Metadaten und Mapping

Der Namespacename und der Entitätencontainer, die im SSDL-Schema deklariert werden, sind Metadaten, die bei der Mappingspezifikation zum Verbinden von Tabellen im Speicher mit Entitäten im CSDL-Schema verwendet werden.

NoteHinweis

SSDL-Namespaces unterscheiden sich von XML-Namespaces. SSDL-Namespaces werden verwendet, um Entitätstypen- und Zuordnungsnamen vollständig zu qualifizieren. Wenn in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) beispielsweise auf Entitätstypen verwiesen wird, muss der vollqualifizierte Name angegeben werden. SSDL befindet sich im XML-Namespace https://schemas.microsoft.com/ado/2006/04/edm/ssdl. Es handelt sich um zwei separate und unterschiedliche Typen von Namespaces, die nicht verwechselt werden sollten.

Die folgenden Zeilen im SSDL-Schema Human Resources deklarieren einen Namespace für die in diesem Schema enthaltenen Metadaten. Der Namespacename wird in MSL verwendet.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget"
        Alias="Self"
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

Das SSDL-Schema enthält ein EntityContainer-Element, das auch von der Mappingspezifikation verwendet wird. Im folgenden SSDL-Abschnitt wird die Deklaration des Entitätencontainers gezeigt.

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />
    <EntitySet Name="EmployeeDepartmentHistory"
                      EntityType="Self.EmployeeDepartmentHistory" />
    <EntitySet Name="EmployeePayHistory"
                             EntityType="Self.EmployeePayHistory" />
    <EntitySet Name="JobCandidate" EntityType="Self.JobCandidate" />
    <EntitySet Name="Shift" EntityType="Self.Shift" />
    <AssociationSet Name="FK_Employee_Employee_ManagerID"
                  Association="Self.FK_Employee_Employee_ManagerID">
      <End Role="Employee" EntitySet="Employee" />
      <End Role="Employee63" EntitySet="Employee" />
    </AssociationSet>
    <AssociationSet Name="FK_JobCandidate_Employee_EmployeeID" 
            Association="Self.FK_JobCandidate_Employee_EmployeeID">
      <End Role="Employee" EntitySet="Employee" />
      <End Role="JobCandidate" EntitySet="JobCandidate" />
    </AssociationSet>
  </EntityContainer>

Entitäten und Zuordnungen in den SSDL-Metadaten geben Tabellen und Spalten im Speichermodell an. Diese Metadaten werden zum Mapping von Entitäten im CSDL-Schema und im Speicher benötigt.

Die EntityContainer-Elemente im konzeptionellen Schema und im Speicherschema sind unabhängig vom Schema-Element, obwohl beide im Schema-Element enthalten sind. Das EntityContainerMapping-Element in MSL ordnet den EntityContainer der SSDL-Datei ohne Verweise auf die in den beiden Schemas deklarierten Namespacenamen einem EntityContainer in der CSDL-Datei zu: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

Die folgende MSL-Überschrift zeigt das Mapping zwischen dem Entitätencontainer HumanResources im konzeptionellen Schema (hier als CdmEntityContainer bezeichnet) und den Speichermetadaten (als StorageEntityContainer bezeichnet).

<?xml version="1.0" encoding="utf-8"?>
<Mapping edm:Space="C-S" 
    xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
  < EntityContainerMapping
                  CdmEntityContainer="HumanResources"
                  StorageEntityContainer="HumanResources">

Die in den Beispielen in diesem Thema verwendete SSDL-Syntax wird in den folgenden Themen ausführlicher beschrieben:

Schema-Element (SSDL)

Namespace-Attribut (SSDL)

EntityType-Element (SSDL)

Association-Element (SSDL)

EntityContainer-Element (SSDL)

Siehe auch

Konzepte

Entity Data Model-Typen
Das vollständige AdventureWorks-Modell (EDM)