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.
Un jeu d’entités est un conteneur logique pour les instances d’un type d’entité et des instances de tout type dérivé de ce type d’entité. (Pour plus d’informations sur les types dérivés, consultez Entity Data Model : Inheritance.) La relation entre un type d’entité et un jeu d’entités est analogue à la relation entre une ligne et une table dans une base de données relationnelle : comme une ligne, un type d’entité décrit la structure de données et, comme une table, un jeu d’entités contient des instances d’une structure donnée. Un jeu d’entités n’est pas une construction de modélisation des données ; elle ne décrit pas la structure des données. Au lieu de cela, un jeu d’entités fournit une construction pour un environnement d’hébergement ou de stockage (tel que le Common Language Runtime ou une base de données SQL Server) pour regrouper les instances de type d’entité afin qu’elles puissent être mappées à un magasin de données.
Un jeu d’entités est défini dans un conteneur d’entités, qui est un regroupement logique de jeux d’entités et d’ensembles d’associations.
Pour qu’une instance de type d’entité existe dans un jeu d’entités, la valeur suivante doit être true :
Le type de l’instance est identique au type d’entité sur lequel le jeu d’entités est basé, ou le type de l’instance est un sous-type du type d’entité.
La clé d’entité de l’instance est unique dans le jeu d’entités.
L’instance n’existe pas dans un autre jeu d’entités.
Remarque
Plusieurs jeux d’entités peuvent être définis à l’aide du même type d’entité, mais une instance d’un type d’entité donné ne peut exister que dans un seul jeu d’entités.
Vous n’avez pas besoin de définir un jeu d’entités pour chaque type d’entité dans un modèle conceptuel.
Exemple :
Le diagramme ci-dessous montre un modèle conceptuel avec trois types d’entités : Book, Publisheret Author.
Le diagramme suivant montre deux jeux d’entités (Books et Publishers) et un jeu d’associations (PublishedBy) basé sur le modèle conceptuel indiqué ci-dessus. Bi dans le Books jeu d’entités représente une instance du type d’entité Book à l'exécution. De même, Pj représente une Publisher instance dans l’ensemble d’entités Publishers . BiPj représente une instance de l’association PublishedBy dans l’ensemble d’associations PublishedBy .
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 conteneur d’entités avec un jeu d’entités pour chaque type d’entité dans le modèle conceptuel indiqué ci-dessus. Notez que le nom et le type d’entité pour chaque jeu d’entités sont définis à l’aide d’attributs XML.
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>
Il est possible de définir plusieurs jeux d’entités par type (MEST). Le langage CSDL suivant définit un conteneur d’entités avec deux jeux d’entités pour le type d’entité Book :
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>