Partager via


Élément Key (CSDL)

L'élément Key est un élément enfant de l'élément EntityType et définit une clé d'entité (une propriété ou un jeu de propriétés d'un type d'entité qui déterminent l'identité). Les propriétés qui composent une clé d'entité sont choisies au moment du design. Les valeurs des propriétés de clé d'entité doivent identifier de façon unique une instance de type d'entité dans un jeu d'entités au moment de l'exécution. Les propriétés qui composent une clé d'entité doivent être choisies pour garantir l'unicité des instances dans un jeu d'entités. L'élément Key définit une clé d'entité en référençant une ou plusieurs des propriétés d'un type d'entité.

L'élément Key peut avoir les éléments enfants suivants :

Attributs applicables

Un nombre quelconque d'attributs d'annotation (attributs XML personnalisés) peut être appliqué à l'élément Key. 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 ci-dessous définit un type d'entité nommé Book. La clé d'entité est définie en référençant la propriété ISBN du type d'entité.

<EntityType Name="Book">
  <Key>
    <PropertyRef Name="ISBN" />
  </Key>
  <Property Type="String" Name="ISBN" Nullable="false" />
  <Property Type="String" Name="Title" Nullable="false" />
  <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
  <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                      FromRole="Book" ToRole="Publisher" />
  <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                      FromRole="Book" ToRole="Author" />
</EntityType>

La propriété ISBN est un bon choix pour la clé d'entité, car un numéro ISBN (International Standard Book Number) identifie un livre de façon unique.

L'exemple suivant illustre un type d'entité (Author) qui possède une clé d'entité composée de deux propriétés : Name et Address.

<EntityType Name="Author">
  <Key>
    <PropertyRef Name="Name" />
    <PropertyRef Name="Address" />
  </Key>
  <Property Type="String" Name="Name" Nullable="false" />
  <Property Type="String" Name="Address" Nullable="false" />
  <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                      FromRole="Author" ToRole="Book" />
</EntityType>

L'utilisation de Name et d'Address pour la clé d'entité est un choix raisonnable, car il est improbable que deux auteurs du même nom habitent à la même adresse. Toutefois, ce choix pour une clé d'entité ne garantit pas vraiment l'unicité des clés d'entité dans un jeu d'entités. Il est recommandé dans ce cas d'ajouter une propriété, telle qu'AuthorId, qui peut être utilisée pour identifier un auteur de façon unique.

Voir aussi

Concepts

Vue d'ensemble d'Entity Framework
Spécification CSDL
Élément Schema (CSDL)

Autres ressources

Spécifications CSDL, SSDL et MSL
ADO.NET Entity Data Model Tools
entity key (Entity Data Model)