Élément Schema (SSDL)

L'élément Schema en langage SSDL (Store Schema Definition Language) est l'élément racine d'une définition de modèle de stockage. Il contient des définitions pour les objets, les fonctions et les conteneurs qui composent un modèle de stockage.

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

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 de stockage. Dans un espace de noms, deux objets ne peuvent pas avoir le même nom.

Un espace de noms de modèle de stockage est différent de l'espace de noms XML de l'élément Schema. Un espace de noms de modèle de stockage (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/ssdl (où AAAA et MM représentent respectivement une année et un mois) sont réservés au langage SSDL. 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 de stockage. 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é Client figure dans l'espace de noms ExampleModel.Store, le nom qualifié complet de l'élément EntityType est ExampleModel.Store.Client.

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

Alias

Non

Identificateur utilisé à la place du nom de l'espace de noms. Par exemple, si un élément EntityType nommé Client figure dans l'espace de noms ExampleModel.Store et que la valeur de l'attribut Alias est StorageModel, vous pouvez utiliser StorageModel.Client comme nom qualifié complet de l'élément EntityType.

Provider

Oui

Fournisseur de données. Pour plus d'informations, consultez Fournisseurs de données Entity Framework.

ProviderManifestToken

Oui

Jeton qui indique au fournisseur quel manifeste de fournisseur retourner. Aucun format n'est défini pour le jeton. Les valeurs du jeton sont définies par le fournisseur. Pour plus d'informations sur les jetons de manifeste du fournisseur SQL Server, consultez Fournisseur de données .NET Framework pour SQL Server (SqlClient) pour Entity Framework.

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 Namespace="ExampleModel.Store" 
      Alias="Self" Provider="System.Data.SqlClient" 
      ProviderManifestToken="2008" 
      xmlns="https://schemas.microsoft.com/ado/2009/02/edm/ssdl">
  <EntityContainer Name="ExampleModelStoreContainer">
    <EntitySet Name="Customers" 
               EntityType="ExampleModel.Store.Customers" 
               Schema="dbo" />
    <EntitySet Name="Orders" 
               EntityType="ExampleModel.Store.Orders" 
               Schema="dbo" />
    <AssociationSet Name="FK_CustomerOrders" 
                    Association="ExampleModel.Store.FK_CustomerOrders">
      <End Role="Customers" EntitySet="Customers" />
      <End Role="Orders" EntitySet="Orders" />
    </AssociationSet>
  </EntityContainer>
  <EntityType Name="Customers">
    <Documentation>
      <Summary>Summary here.</Summary>
      <LongDescription>Long description here.</LongDescription>
    </Documentation>
    <Key>
      <PropertyRef Name="CustomerId" />
    </Key>
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <Property Name="Name" Type="nvarchar(max)" Nullable="false" />
  </EntityType>
  <EntityType Name="Orders" xmlns:c="http://CustomNamespace">
    <Key>
      <PropertyRef Name="OrderId" />
    </Key>
    <Property Name="OrderId" Type="int" Nullable="false" 
              c:CustomAttribute="someValue"/>
    <Property Name="ProductId" Type="int" Nullable="false" />
    <Property Name="Quantity" Type="int" Nullable="false" />
    <Property Name="CustomerId" Type="int" Nullable="false" />
    <c:CustomElement>
      Custom data here.
    </c:CustomElement>
  </EntityType>
  <Association Name="FK_CustomerOrders">
    <End Role="Customers" 
         Type="ExampleModel.Store.Customers" Multiplicity="1">
      <OnDelete Action="Cascade" />
    </End>
    <End Role="Orders" 
         Type="ExampleModel.Store.Orders" Multiplicity="*" />
    <ReferentialConstraint>
      <Principal Role="Customers">
        <PropertyRef Name="CustomerId" />
      </Principal>
      <Dependent Role="Orders">
        <PropertyRef Name="CustomerId" />
      </Dependent>
    </ReferentialConstraint>
  </Association>
  <Function Name="UpdateOrderQuantity" 
            Aggregate="false" 
            BuiltIn="false" 
            NiladicFunction="false" 
            IsComposable="false" 
            ParameterTypeSemantics="AllowImplicitConversion" 
            Schema="dbo">
    <Parameter Name="orderId" Type="int" Mode="In" />
    <Parameter Name="newQuantity" Type="int" Mode="In" />
  </Function>
  <Function Name="UpdateProductInOrder" IsComposable="false">
    <CommandText>
      UPDATE Orders
      SET ProductId = @productId
      WHERE OrderId = @orderId;
    </CommandText>
    <Parameter Name="productId"
               Mode="In"
               Type="int"/>
    <Parameter Name="orderId"
               Mode="In"
               Type="int"/>
  </Function>
</Schema>

Voir aussi

Concepts

Vue d'ensemble d'Entity Framework
Spécification SSDL

Autres ressources

Spécifications CSDL, SSDL et MSL
ADO.NET Entity Data Model Tools