Contraintes référentielles (Entity Framework)

Dans un modèle EDM (Entity Data Model), des contraintes référentielles peuvent exister entre des objets connexes, par exemple entre les objets SalesOrderHeader et SalesOrderDetail. Ces contraintes sont spécifiées dans le fichier CSDL (Conceptual Schema Definition Language). Pour plus d'informations, voir Élément ReferentialConstraint (EntityContainer CSDL).

NoteRemarque

Les services Object Services n'appliquent pas toutes les contraintes qui peuvent être exprimées dans un modèle EDM. Par exemple, ils n'appliquent pas de contraintes de cardinalité aux relations, ce qui peut entraîner des résultats incohérents lorsque vous enregistrez les modifications apportées à des objets connexes dans la source de données. Assurez-vous que toutes les contraintes critiques du modèle sont appliquées par la source de données.

Lorsque vous utilisez des objets dotés de relations limitées, soyez conscient des points suivants :

  • Les objets dépendants (enfants) ne peuvent pas exister sans une relation définie à l'objet parent.

  • Lorsque vous créez un nouvel objet enfant, l'objet parent doit exister dans le contexte de l'objet ou dans la source de données avant que SaveChanges soit appelé. Dans le cas contraire, une exception InvalidOperationException est levée.

  • Utilisez la méthode Add pour ajouter des objets enfants au EntityCollection de l'objet parent. L'accès à la collection des objets enfants s'effectue à partir d'une propriété de navigation qui a été définie pour la relation ou à partir des méthodes GetRelatedEnd ou GetRelatedCollection sur la propriété RelationshipManager de l'objet parent.

  • La suppression de l'objet parent supprime également tous les objets enfants dans la relation limitée. Ce résultat équivaut à activer la propriété CascadeDelete sur l'association pour la relation.

  • La suppression de la relation supprime l'objet enfant. Cela signifie qu'appeler Remove sur l'objet EntityCollection marque à la fois la relation et l'objet enfant pour la suppression.

  • Une fois qu'une relation a été créée, elle peut être modifiée uniquement par le processus suivant :

    1. Abandonnez la relation existante.

    2. Appelez SaveChanges.

    3. Ajoutez l'objet enfant persistant au EntityCollection du nouvel objet parent.

Voir aussi

Autres ressources

Utilisation d'objets (Entity Framework)