Freigeben über


Namespace-Attribut (CSDL)

Der in CSDL deklarierte Namespacename hat im Entitätsdatenmodell (EDM) mehrere Funktionen. Damit beim Erstellungsprozess programmierbare Klassen mit den Speicherstrukturen verbunden werden können, mit denen Daten für Anwendungen dauerhaft gespeichert werden, müssen die Typen und Container im CSDL-Schema Speichermetadaten zugeordnet werden. Mithilfe von MSL werden konzeptionelle Typen Definitionen in SSDL zugeordnet, die das Speichermodell beschreiben.

Nachdem das Objektmodell aus der CSDL-Datei erstellt wurde, wird der in der CSDL-Datei angegebene Namespace vom Anwendungscode verwendet, um auf die beim Erstellungsprozess in der DLL erstellten Klassen zu verweisen. Die folgende using-Direktive identifiziert die Klassen im AdventureWorksHRModel-Namespace.

using AdventureWorksHRModel;

Der im CSDL-Schema deklarierte Namespace identifiziert zudem dieses Objektmodell in der für EDM-Anwendungen erforderlichen Datei exe.config. In dieses Beispiel schließt die Verbindungszeichenfolge den HumanResources-Klassennamen ein. Dieser Klassenname beruht auf dem Namen des Entitätencontainers.

Weitere Informationen über Entitätencontainer finden Sie unter Entitätencontainer (EDM).

<connectionStrings>
    <add name="HumanResources" connectionString='metadata=.;
    provider=System.Data.SqlClient; provider connection 
                                          string="server=servername;
    database=AdventureWorks; integrated security=true;
    multipleactiveresultsets=true"' providerName="System.Data.Mapping"/>
</connectionStrings>

Wenn die vorherige Verbindungszeichenfolge in der Datei exe.config vorhanden ist, ist für das Instanziieren der HumanResources EntityConnection für die Verwendung durch den Anwendungscode lediglich folgende Anweisung erforderlich.

HumanResources hrDb = new HumanResources();

Namespace und Mapping

Das Schema-Element des CSDL-Schemas enthält den Namespacenamen, der zur Identifikation des Objektmodells verwendet wird.

<?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 deren Zweck im zu erstellenden Datenmodell wider. AdventureWorksHRModel ist das konzeptionelle Modell, das dem Zielmetadaten-Namespace AdventureWorksHRTarget zugeordnet ist.

Die EntityContainer -Elemente im konzeptionellen und im Speicherschema sind unabhängig von den Schema -Elementen, obwohl beide in Schema -Elementen enthalten sind. In der Mappingspezifikation ordnet das Element EntityContainerMapping die beiden Namespaces mit dem Verweis auf ihre Containerobjekte und ohne Verweis auf deren Namespacenamen zu: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

Die folgende MSL-Überschrift zeigt das Mapping zwischen dem HumanResources-Entitätencontainer 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:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS" 
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

Alias

Das Namespace-Attribut in CSDL verfügt über ein zugeordnetes Alias-Attribut, das verwendet werden kann, um den Namespacenamen im übrigen Schema zu verkürzen. Im folgenden Beispiel wird dem Alias-Attribut die Zeichenfolge Self zugewiesen.

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

Der Alias ist für das übrige Schema äußerst hilfreich, da er die Lesbarkeit verbessert (siehe folgende Syntax).

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />

Xmlns

Das vorherige Beispiel enthält auch ein xmlns-Attribut, dem eine URL zugewiesen ist. Alle CSDL-Schemas verwenden dieselbe URL.

Siehe auch

Konzepte

Speichermetadatenschema (SSDL)
Mappingspezifikation (MSL)
Das vollständige AdventureWorks-Modell (EDM)