Élément Schema (CSDL)

L'élément Schema est l'élément racine d'une définition de modèle conceptuel.Il contient des définitions pour les objets, fonctions et conteneurs qui composent un modèle conceptuel.

L'élément Schema peut contenir zéro, un ou plusieurs des éléments enfants suivants :

Un élément Schema peut contenir zéro ou un élément d'annotation.

Notes

L'élément Function et les éléments d'annotation sont autorisés uniquement dans les modèles conceptuels pour les applications qui ciblent .NET Framework version 4 ou version ultérieure.L'espace de noms XML de tels modèles est https://schemas.microsoft.com/ado/2008/09/edm.

L'élément Schema utilise l'attribut Namespace pour définir l'espace de noms pour le type d'entité, le type complexe et les objets d'association dans un modèle conceptuel.Dans un espace de noms, deux objets ne peuvent pas avoir le même nom.Les espaces de noms peuvent couvrir plusieurs éléments Schema et plusieurs fichiers .csdl.

Un espace de noms de modèle conceptuel est différent de l'espace de noms XML de l'élément Schema.Un espace de noms de modèle conceptuel (tel que défini par l'attribut Namespace) est un conteneur logique pour des types d'entités, des types complexes et des types d'association.L'espace de noms XML (indiqué par l'attribut xmlns) d'un élément Schema est l'espace de noms par défaut pour les éléments et attributs enfants de l'élément Schema.Les espaces de noms XML de la forme https://schemas.microsoft.com/ado/AAAA/MM/edm (où AAAA et MM représentent respectivement une année et un mois) sont réservés au langage CSDL.Des éléments et attributs personnalisés ne peuvent pas être dans des espaces de noms de cette forme.

Attributs applicables

Le tableau ci-dessous décrit les attributs qui peuvent s'appliquer à l'élément Schema.

Nom d'attribut

Requis

Valeur

Namespace

Oui

Espace de noms du modèle conceptuel.La valeur de l'attribut Namespace est utilisée pour former le nom qualifié complet d'un type.Par exemple, si un élément EntityType nommé Customer figure dans l'espace de noms Simple.Example.Model, le nom qualifié complet de l'élément EntityType est SimpleExampleModel.Customer.

Les chaînes suivantes ne peuvent pas être utilisées comme valeur pour l'attribut Namespace : System, Transient ni Edm.La valeur de l'attribut Namespace ne peut pas être identique à la valeur de l'attribut Namespace dans l'élément Schéma SSDL.

Alias

Non

Identificateur utilisé à la place du nom de l'espace de noms.Par exemple, si un élément EntityType nommé Customer figure dans l'espace de noms Simple.Example.Model et que la valeur de l'attribut Alias est Model, vous pouvez utiliser Modèle.Client comme nom qualifié complet de l'élément EntityType..

Notes

Un nombre quelconque d'attributs d'annotation (attributs XML personnalisés) peut être appliqué à l'élément Schema.Toutefois, les attributs personnalisés ne peuvent pas appartenir à un espace de noms XML réservé pour le langage CSDL.Les noms qualifiés complets de deux attributs personnalisés quelconques ne peuvent pas être identiques.

Exemple

L'exemple suivant illustre un élément Schema qui contient un élément EntityContainer, deux éléments EntityType et un élément Association.

<Schema xmlns="https://schemas.microsoft.com/ado/2008/09/edm" 
     xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration"
     xmlns:store="https://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="ExampleModel" Alias="Self">
        <EntityContainer Name="ExampleModelContainer">
          <EntitySet Name="Customers" 
                     EntityType="ExampleModel.Customer" />
          <EntitySet Name="Orders" EntityType="ExampleModel.Order" />
          <AssociationSet 
                      Name="CustomerOrder" 
                      Association="ExampleModel.CustomerOrders">
            <End Role="Customer" EntitySet="Customers" />
            <End Role="Order" EntitySet="Orders" />
          </AssociationSet>
        </EntityContainer>
        <EntityType Name="Customer">
          <Key>
            <PropertyRef Name="CustomerId" />
          </Key>
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
          <Property Type="String" Name="Name" Nullable="false" />
          <NavigationProperty 
                   Name="Orders" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Customer" ToRole="Order" />
        </EntityType>
        <EntityType Name="Order">
          <Key>
            <PropertyRef Name="OrderId" />
          </Key>
          <Property Type="Int32" Name="OrderId" Nullable="false" />
          <Property Type="Int32" Name="ProductId" Nullable="false" />
          <Property Type="Int32" Name="Quantity" Nullable="false" />
          <NavigationProperty 
                   Name="Customer" 
                   Relationship="ExampleModel.CustomerOrders" 
                   FromRole="Order" ToRole="Customer" />
          <Property Type="Int32" Name="CustomerId" Nullable="false" />
        </EntityType>
        <Association Name="CustomerOrders">
          <End Type="ExampleModel.Customer" 
               Role="Customer" Multiplicity="1" />
          <End Type="ExampleModel.Order" 
               Role="Order" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Customer">
              <PropertyRef Name="CustomerId" />
            </Principal>
            <Dependent Role="Order">
              <PropertyRef Name="CustomerId" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
      </Schema>

Voir aussi

Concepts

Vue d'ensemble d'Entity Framework

Spécification CSDL

Autres ressources

Spécifications CSDL, SSDL et MSL

ADO.NET Entity Data Model Tools