Konzeptionelles Schema (CSDL)
Beim konzeptionellen Schema handelt es sich um eine Entwurfsvorlage für das Objektmodell, die von auf dem Entitätsdatenmodell (EDM) aufbauenden Anwendungen verwendet wird. Beim im konzeptionellen Schema deklarierten Namespacenamen handelt es sich um den Namespacenamen, der die Entitäts- und Zuordnungsklassen im erstellten Objektmodell qualifiziert.
Die EDM-Architektur bietet eine Grundstruktur für Entitäten und Zuordnungen. Anwendungsentwickler leiten Entitäten und Zuordnungen auf Grundlage dieser Typen ab. Die im konzeptionellen Schema definierten Typen werden Metadaten zugeordnet, die das Speichermodell beschreiben.
Für das konzeptionelle Schema wird der XML-Dialekt konzeptionelle Schemadefinitionsprache (Conceptual Schema Definition Language, CSDL) verwendet. Für die Speichermetadaten wird der XML-Dialekt Datenspeicherschema-Definitionssprache (Store Schema Definition Language, SSDL) verwendet.
Hinweis |
---|
CSDL-Namespaces unterscheiden sich von XML-Namespaces. CSDL-Namespaces werden verwendet, um Entitätstypen- und Zuordnungsnamen vollständig zu qualifizieren. Wenn beispielsweise in MSL auf Entitätstypen verwiesen wird, muss der vollqualifizierte Name angegeben werden. Zudem werden Klassen in einem CLR-Namespace mit dem gleichen Namen erstellt. CSDL befindet sich im XML-Namespace |
Namespace und Mapping
Das Stammelement des konzeptionellen Schemas ist das Schema-Element. Es enthält ein Namespace-Attribut, das den CSDL-Namespace angibt. Der Namespace wird in der Mappingspezifikation verwendet, um die CSDL-Typen mit Speichermetadaten zu verbinden.
Die folgende Deklaration des CSDL-Schemas beinhaltet den Namespace, der in der Mappingspezifikation verwendet wird, um in der Beispielanwendung AdventureWorksHRModel Entitäten und Zuordnungen den Speichermetadaten zuzuordnen.
<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
Alias="Self"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
Die SSDL-Datei verfügt über eine ähnliche Zeile.
<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget"
Alias="Self"
xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">
Die in diesen Deklarationen verwendeten Namespacenamen spiegeln ihren Zweck im zu erstellenden Datenmodell wieder. AdventureWorksHRModel ist das konzeptionelle Modell, das in diesen Beispielen dem Zielmetadaten-Namespace AdventureWorksHRTarget zugeordnet ist.
Die Entitätencontainerelemente des konzeptionellen Schemas und des Speicherschemas sind unabhängig vom Element Schema, obwohl beide untergeordnete Elemente des Elements Schema sind.
In der Mappingspezifikation ordnet das Element EntityContainerMapping die beiden Containerobjekte ohne Verweis auf deren Namespacenamen zu: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources"
. Die Verwendung eines vom Schemanamespace-Namen qualifizierten Entitätencontainernamens löst eine Mappingausnahme aus.
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">
Den SSDL-Spezifikationen werden in der Mappingspezifikation andere CSDL-Schemaelemente auf ähnliche Weise zugeordnet. Im Rahmen der Themen dieses Abschnitts werden die Typen und Elemente beschrieben, die zur Implementierung eines auf dem EDM aufbauenden Objektmodells verwendet werden.
In diesem Abschnitt
EntityContainer-Element (CSDL)
Siehe auch
Konzepte
Implementieren von Entitäten (EDM)
Implementieren von Zuordnungen (EDM)
Das vollständige AdventureWorks-Modell (EDM)