Schéma conceptuel (CSDL)
Le schéma conceptuel est un modèle de conception pour le modèle objet qui sera utilisé par les applications générées sur le modèle EDM (Modèle de données d'entité). Le nom d'espace de noms déclaré dans le schéma conceptuel sera le nom d'espace de noms qui qualifie les classes d'entités et d'associations dans le modèle objet généré.
L'architecture EDM fournit la structure de base des entités et des associations. Les concepteurs d'applications dérivent les entités et les associations en fonction de ces types. Les types définis dans le schéma conceptuel sont mappées aux métadonnées décrivant le modèle de stockage.
Le schéma conceptuel utilise un dialecte XML appelé le langage CSDL (Conceptual Schema Definition Language). Les métadonnées de stockage utilisent un dialecte XML appelé le langage SSDL (Store Schema Definition Language).
Remarque |
---|
Les espaces de noms CSDL sont différents des espaces de noms XML. Les espaces de noms CSDL sont utilisés pour affecter un nom complet aux noms des types d'entités et aux noms des associations. Par exemple, lorsque le langage MSL (Mapping Specification Language) fait référence à des types d'entités, le nom complet doit être fourni. Par ailleurs, lorsque des classes sont générées, elles sont créées dans un espace de noms CLR du même nom. Le langage CSDL se trouve dans l'espace de noms XML |
Espace de noms et mappage
L'élément racine du schéma conceptuel est l'élément Schema. Il contient un attribut Namespace qui spécifie l'espace de noms CSDL. L'espace de noms est utilisé dans la spécification de mappage pour connecter les types CSDL aux métadonnées de stockage.
La déclaration suivante du schéma CSDL contient l'espace de noms utilisé dans la spécification de mappage pour mapper les entités et les associations de l'exemple d'application AdventureWorksHRModel aux métadonnées de stockage.
<?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 similaire 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 leur objet dans le modèle de données qui est construit. AdventureWorksHRModel est le modèle conceptuel qui est mappé, dans ces exemples, à l'espace de noms cible des métadonnées AdventureWorksHRTarget.
Les éléments du conteneur d'entités dans le schéma conceptuel et le schéma de stockage sont indépendants de l'élément Schema même si ce sont des éléments enfants des éléments Schema dans les deux cas.
Dans la spécification de mappage, l'élément EntityContainerMapping mappe les deux objets conteneur sans référence à leurs noms d'espace de noms : edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources"
. L'utilisation d'un nom de conteneur d'entités qualifié par le nom de l'espace de noms du schéma génère une exception de mappage.
L'en-tête MSL (Mapping Specification Language) ci-dessous illustre le mappage entre le conteneur d'entités HumanResources dans le schéma conceptuel, référencé ici sous le nom CdmEntityContainer, et les métadonnées de stockage, référencées sous le nom StorageEntityContainer..
<?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">
D'autres éléments de schéma CSDL sont mappés de la même façon aux spécifications SSDL dans la spécification de mappage. Les rubriques de cette section décrivent les types et les éléments utilisés pour implémenter un modèle objet généré sur le modèle EDM.
Dans cette section
Élément EntityContainer (CSDL)
Voir aussi
Concepts
Implémentation d'entités (EDM)
Implémentation d'associations (EDM)
Modèle complet AdventureWorks (EDM)