Partager via


Modèle de données d’entité : héritage

Le modèle de données d’entité (EDM) prend en charge l’héritage pour les types d’entités. L’héritage dans l’EDM est similaire à l’héritage pour les classes dans les langages de programmation orienté objet. Comme avec les classes dans les langages orientés objet, dans un modèle conceptuel, vous pouvez définir un type d’entité (un type dérivé) qui hérite d’un autre type d’entité (le type de base). Toutefois, contrairement aux classes de programmation orientée objet, dans un modèle conceptuel, le type dérivé hérite toujours de toutes les propriétés et propriétés de navigation du type de base. Vous ne pouvez pas remplacer les propriétés héritées dans un type dérivé.

Dans un modèle conceptuel, vous pouvez créer des hiérarchies d’héritage dans lesquelles un type dérivé hérite d’un autre type dérivé. Le type situé en haut de la hiérarchie (le type dans la hiérarchie qui n’est pas un type dérivé) est appelé type racine. Dans une hiérarchie d’héritage, la clé d’entité doit être définie sur le type racine.

Vous ne pouvez pas générer de hiérarchies d’héritage dans lesquelles un type dérivé hérite de plusieurs types. Par exemple, dans un modèle conceptuel avec un type d’entité Book , vous pouvez définir des types FictionBook dérivés et NonFictionBook que chacun hérite de Book. Toutefois, vous ne pouviez pas alors définir un type qui hérite à la fois des types FictionBook et NonFictionBook.

Exemple :

Le diagramme suivant montre un modèle conceptuel avec quatre types d’entités : Book, , FictionBookPublisher, et Author. Le FictionBook type d’entité est un type dérivé, hérite du type d’entité Book . Le FictionBook type hérite des ISBN (Key)propriétés , Titleet Revision définit une propriété supplémentaire appelée Genre.

Diagramme montrant un modèle conceptuel avec quatre types d’entités.

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 suivant définit un type d’entité, FictionBookqui hérite du Book type (comme dans le diagramme ci-dessus) :

<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
  <Property Type="String" Name="Genre" Nullable="false" />
</EntityType>

Voir aussi