Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une clé d’entité est une propriété ou un ensemble de propriétés d’un type d’entité utilisé pour déterminer 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 manière unique une instance de type d’entité au sein d’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.
Voici les conditions requises pour qu’un ensemble de propriétés soit une clé d’entité :
Il n’y a pas deux clés d’entité au sein d’un jeu d’entités qui peuvent être identiques. Autrement dit, pour deux entités au sein d’un jeu d’entités, les valeurs de toutes les propriétés qui constituent une clé ne peuvent pas être identiques. Toutefois, certaines (mais pas toutes) des valeurs qui composent une clé d’entité peuvent être identiques.
Une clé d’entité doit se composer d’un ensemble de propriétés de type primitif non nullables et immuables.
Les propriétés qui composent une clé d’entité pour un type d’entité donné ne peuvent pas changer. Vous ne pouvez pas autoriser plusieurs clés d’entité possibles pour un type d’entité donné ; Les clés de substitution ne sont pas prises en charge.
Lorsqu’une entité est impliquée dans une hiérarchie d’héritage, l’entité racine doit contenir toutes les propriétés qui composent la clé d’entité, et la clé d’entité doit être définie sur le type d’entité racine. Pour plus d’informations, consultez Entity Data Model : Héritage.
Exemple :
Le diagramme ci-dessous montre un modèle conceptuel avec trois types d’entités : Book, Publisheret Author. Les propriétés de chaque type d’entité qui composent sa clé d’entité sont indiquées avec « (Clé) ». Notez que le Author type d’entité a une clé d’entité qui se compose de deux propriétés et NameAddress.
Le ADO.NET Entity Framework utilise un langage spécifique au domaine (DSL) appelé langage de définition de schéma conceptuel (CSDL) pour définir des modèles conceptuels. Le langage CSDL ci-dessous définit le Book type d’entité indiqué dans le diagramme ci-dessus. Notez que la clé d’entité est définie en référençant la ISBN propriété 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 ISBN propriété est un bon choix pour la clé d’entité, car un numéro de livre standard international (ISBN) identifie de manière unique un livre.
Le langage CSDL ci-dessous définit le Author type d’entité indiqué dans le diagramme ci-dessus. Notez que la clé d’entité se compose de deux propriétés et NameAddress.
<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 Name et Address pour la clé d’entité est un choix raisonnable, car deux auteurs du même nom sont peu susceptibles de vivre à la même adresse. Toutefois, ce choix pour une clé d’entité ne garantit pas absolument les clés d’entité uniques dans un jeu d’entités. L’ajout d’une propriété, telle que AuthorId, qui peut être utilisée pour identifier de manière unique un auteur est recommandée dans ce cas.