Partager via


Contrainte d’intégrité référentielle

Une contrainte d’intégrité référentielle dans le modèle de données d’entité (EDM) est similaire à une contrainte d’intégrité référentielle dans une base de données relationnelle. De la même façon qu’une colonne (ou des colonnes) d’une table de base de données peut référencer la clé primaire d’une autre table, une propriété (ou des propriétés) d’un type d’entité peut référencer la clé d’entité d’un autre type d’entité. Le type d’entité référencé est appelé extrémité principale de la contrainte. Le type d’entité qui fait référence à l'extrémité principale est appelé l'extrémité dépendante de la contrainte.

Une contrainte d’intégrité référentielle est définie dans le cadre d’une association entre deux types d’entités. La définition d’une contrainte d’intégrité référentielle spécifie les informations suivantes :

  • Terminaison principale de la contrainte. (Type d’entité dont la clé d’entité est utilisée comme référence par l'extrémité dépendante.)

  • Clé d'entité de la terminaison principale.

  • Terminaison dépendante de la contrainte. (Type d'entité dont une ou plusieurs propriétés référencent la clé d'entité de la terminaison principale.)

  • Propriété ou propriétés de référence de la fin dépendante.

L’objectif des contraintes d’intégrité référentielle dans l’EDM est de s’assurer que les associations valides existent toujours. Pour plus d’informations, consultez Propriété de clé étrangère.

Exemple :

Le diagramme ci-dessous montre un modèle conceptuel avec deux associations : WrittenBy et PublishedBy. Le Book type d’entité a une propriété, PublisherIdqui fait référence à la clé d’entité du Publisher type d’entité lorsque vous définissez une contrainte d’intégrité référentielle sur l’association PublishedBy .

RefConstraintModel

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 une contrainte d’intégrité référentielle sur l’association PublishedBy indiquée dans le modèle conceptuel ci-dessus.

<Association Name="PublishedBy">
  <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
  </End>
  <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
  <ReferentialConstraint>
    <Principal Role="Publisher">
      <PropertyRef Name="Id" />
    </Principal>
    <Dependent Role="Book">
      <PropertyRef Name="PublisherId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

Voir aussi