Partager via


Attribut Namespace (CSDL)

Le nom d'espace de noms déclaré dans le langage CSDL (Conceptual Schema Definition Language) a plusieurs fonctions dans le modèle EDM (Modèle de données d'entité). Afin que le processus de génération connecte les classes programmables aux structures de stockage qui rendent persistantes les données des applications, les types et les conteneurs dans le schéma CSDL doivent être mappés aux métadonnées de stockage. Le langage MSL (Mapping Specification Language) connecte des types conceptuels aux définitions dans le langage SSDL (Store Schema Definition Language) qui décrit le modèle de stockage.

Après avoir construit le modèle objet à partir du fichier CSDL, le code d'application utilise l'espace de noms spécifié dans le fichier CSDL pour référencer les classes dans la DLL créée par le processus de génération. La directive using suivante identifie les classes dans l'espace de noms AdventureWorksHRModel.

using AdventureWorksHRModel;

L'espace de noms déclaré dans le schéma CSDL identifie également ce modèle objet dans le fichier exe.config requis par les applications EDM. Dans cet exemple, la chaîne de connexion inclut le nom de classe HumanResources. Ce nom de classe est fondé sur le nom du conteneur d'entités.

Pour plus d'informations sur les conteneurs d'entités, voir Conteneurs d'entités (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>

Avec la chaîne de connexion précédente dans le fichier exe.config, la seule chose nécessaire pour instancier le HumanResources EntityConnection pour qu'il soit utilisé par le code d'application correspond à l'instruction ci-dessous.

HumanResources hrDb = new HumanResources();

Espace de noms et mappage

L'élément Schema du schéma CSDL contient l'espace de noms qui est utilisé pour identifier le modèle objet.

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

Il existe une ligne semblable dans le fichier SSDL.

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

Les noms d'espaces de noms utilisés dans ces déclarations reflètent leurs objectifs dans le modèle de données qui est construit. AdventureWorksHRModel est le modèle conceptuel mappé à l'espace de noms de métadonnées cibles AdventureWorksHRTarget.

Les éléments EntityContainer dans le schéma conceptuel et dans le schéma de stockage sont indépendants des éléments Schema bien qu'ils soient contenus par les éléments Schema . Dans la spécification de mappage, l'élément EntityContainerMapping mappe les deux espaces de noms par les références à leurs objets de conteneur sans référence à leurs noms d'espaces de noms : edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

Le titre MSL suivant illustre le mappage entre le conteneur d'entités HumanResources dans le schéma conceptuel, référencé ici sous le nom de CdmEntityContainer, et les métadonnées de stockage, référencées sous le nom de StorageEntityContainer.

<?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

L'attribut CSDL Namespace a un attribut Alias associé qui peut être utilisé pour raccourcir le nom d'espace de noms dans le reste du schéma. L'exemple suivant affecte la chaîne Self à l'attribut Alias.

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

L'attribut Alias est très utile dans le reste du schéma et améliore la lisibilité, comme le montre la syntaxe ci-dessous.

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

Xmlns

L'exemple précédent contient également un attribut xmlns auquel est assignée une URL. Tous les schémas CSDL utilisent cette même URL.

Voir aussi

Concepts

Schéma des métadonnées de stockage (SSDL)
Spécification de mappage (MSL)
Modèle complet AdventureWorks (EDM)