Contrainte d'intégrité référentielle (Entity Data Model)
Une contrainte d'intégrité référentielle dans le modèle EDM (Entity Data Model) est semblable à une contrainte d'intégrité référentielle dans une base de données relationnelle. De la même manière qu'une ou plusieurs colonnes d'une table de base de données peuvent référencer la clé primaire d'une autre table, une ou plusieurs propriétés d'un type d'entité peuvent référencer la clé d'entité d'un autre type d'entité. Le type d'entité référencé est appelé terminaison principale de la contrainte. Le type d'entité qui référence la terminaison principale est appelé terminaison 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é. 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 référencée par la terminaison 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 terminaison dépendante.
Les contraintes d'intégrité référentielle dans le modèle EDM ont pour objectif de vérifier que des associations valides existent toujours. Pour plus d'informations, consultez Propriété de clé étrangère (Entity Data Model).
Exemple
Le diagramme suivant montre un modèle conceptuel avec deux associations : WrittenBy et PublishedBy. Le type d'entité Book a une propriété, PublisherId, qui référence la clé d'entité du type d'entité Publisher lorsque vous définissez une contrainte d'intégrité référentielle sur l'association PublishedBy.
ADO.NET Entity Framework utilise un langage spécifique à un domaine (DSL), appelé CSDL (Conceptual Schema Definition Language), pour définir des modèles conceptuels. Le CSDL suivant définit une contrainte d'intégrité référentielle sur l'association PublishedBy présenté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>