Share via


Définition d'une logique métier (Entity Framework)

Vous pouvez ajouter une logique métier à votre application Entity Framework en gérant les événements déclenchés au cours de certaines opérations, telles que les modifications apportées aux propriétés ou aux relations. Cette logique métier peut inclure la création d'une validation ou d'une journalisation supplémentaire lors de la modification de propriétés ou de l'appel de la méthode SaveChanges. Vous pouvez appeler la logique métier personnalisée en gérant les événements déclenchés par Entity Framework ou en définissant les méthodes partielles personnalisées qui sont appelées lorsque des propriétés sont modifiées. Cette rubrique répertorie certains événements et fournit des liens vers d'autres rubriques connexes.

Événement et méthodes partielles Description

System.Data.Objects.ObjectContext.ObjectMaterialized

Déclenché lorsqu'une nouvelle entité est créée à partir des données de la source de données dans le cadre d'une opération de requête ou de chargement. L'événement se produit après que toutes les propriétés scalaires, complexes et de référence ont été définies, mais avant le chargement des collections. S'il existe un objet avec la même valeur de clé dans le contexte de l'objet, Entity Framework ne recrée pas l'objet et cet événement n'est pas déclenché.

System.Data.Objects.ObjectContext.SavingChanges

Déclenché au démarrage d'une opération SaveChanges sur un objet ObjectContext. Cet événement est utilisé en général pour valider les objets modifiés avant que les nouvelles valeurs soient écrites dans la base de données.

Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de l'enregistrement de modifications (Entity Framework).

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

Se produit lorsque les entités quittent le contexte via des méthodes de suppression ou de détachement ou qu'elles y entrent par le biais de requêtes ou de méthodes d'ajout ou d'attachement. Pour plus d'informations, consultez Procédure : exécuter la logique métier lors du changement d'état d'un objet.

Dd456876.note(fr-fr,VS.100).gifRemarque :
Si vous utilisez des entités POCO sans proxys de suivi des modifications, la modification est détectée lorsque vous appelez la méthode DetectChanges ou la méthode SaveChanges, qui appelle DetectChanges.

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

Se produit lorsqu'une association est modifiée. Si vous utilisez les entités générées par le code par défaut ou des entités POCO avec des objets proxy, cet événement se produit en même temps que la modification de propriété de navigation réelle :

Dd456876.note(fr-fr,VS.100).gifRemarque :
Si vous utilisez des entités POCO sans proxys, la modification est détectée lorsque vous appelez la méthode DetectChanges ou la méthode SaveChanges, qui appelle DetectChanges.

Les événements peuvent être supprimés lors d'opérations en bloc, telles que Load, Attach et Clear.

Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de la modification des associations.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

Se produit lorsqu'une modification de valeur de propriété scalaire est en cours. Les classes générées par Entity Framework appellent la méthode ReportPropertyChanging dans les accesseurs Set de propriété scalaire. La méthode ReportPropertyChanging déclenche l'événement PropertyChanging. Gérez cet événement pour exécuter une logique métier, telle que la validation, avant qu'une valeur de propriété soit modifiée. Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de la modification des propriétés scalaires (Entity Framework).

Lors du suivi des modifications apportées aux classes de données personnalisées qui implémentent IEntityWithChangeTracker, vous devez utiliser IEntityChangeTracker pour signaler les modifications apportées aux propriétés.

Dd456876.note(fr-fr,VS.100).gifRemarque :
Pour être informé des modifications apportées à une propriété de navigation, inscrivez-vous pour l'événement System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de la modification des associations.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

Se produit lorsqu'une valeur de propriété scalaire a été modifiée. Les classes générées par Entity Framework appellent la méthode ReportPropertyChanged dans les accesseurs Set de propriété scalaire. La méthode ReportPropertyChanged déclenche l'événement PropertyChanged. Gérez cet événement pour exécuter une logique métier, telle que l'écriture dans un journal, lorsqu'une propriété est modifiée. Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de la modification des propriétés scalaires (Entity Framework).

Lors du suivi des modifications apportées aux classes de données personnalisées qui implémentent IEntityWithChangeTracker, vous devez utiliser IEntityChangeTracker pour signaler les modifications apportées aux propriétés.

Dd456876.note(fr-fr,VS.100).gifRemarque :
Pour être informé des modifications apportées à une propriété de navigation, inscrivez-vous pour l'événement System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de la modification des associations.

Méthode OnContextCreated

Les outils Entity Data Model génèrent une méthode partielle OnContextCreated dans la classe qui représente l'élément EntityContainer pour le modèle et qui hérite de la classe ObjectContext. Cette méthode partielle est appelée chaque fois qu'une classe ObjectContext est instanciée. Implémentez cette méthode partielle dans votre code pour inscrire un gestionnaire pour l'événement SavingChanges. Pour plus d'informations, consultez Procédure : exécuter la logique métier lors de l'enregistrement de modifications (Entity Framework).

On PropertyName Changing et OnPropertyNameChanged

Les outils Entity Data Model génèrent des méthodes partielles dans les accesseurs Set de propriété scalaire pour chaque type d'entité. La méthode partielle On PropertyName Changing est appelée avant que la valeur soit définie. La méthode partielle On PropertyName Changed est appelée après que la valeur soit définie. Implémentez ces méthodes partielles pour ajouter la logique métier.

Voir aussi

Concepts

Personnalisation des objets (Entity Framework)

Autres ressources

Entity Data Model Tools