8
votes

Une entité modèle déclenche-t-elle un événement lorsque ses données changent?

Je veux être averti lorsque les données changent dans une table particulière représentée par un modèle d'entité. Le modèle est-il au courant des changements de données sous-jacents? Si cela déclenche réellement un événement, comment puis-je m'abonner?


1 commentaires

Pour autant que je sache .. Non, mais aucune modification apportée à l'EDMX est effectuée par votre propre code. Vous pouvez donc mettre en œuvre un tel événement.


4 Réponses :


1
votes

Non, il n'y a pas d'événements tirés sur Changer , uniquement lorsque vous faites SAVECHANGES Vous pouvez attraper ce dont vous avez besoin ...

Pour cela, essayez de regarder Cette question / réponses < / p>


0 commentaires

1
votes

Si votre objectif est de sauvegarder des données uniquement au cas où il y a des modifications, reportez-vous au lien suivant:

http://msdn.microsoft. com / fr-nous / bibliothèque / system.data.objects.ObjectContext.savingchanges.aspx


0 commentaires

6
votes

Votre question est en fait très peu claire.

Je veux être averti lorsque les données changent dans une table particulière, représentée par un modèle d'entité.

Qu'est-ce que cela signifie?

Voulez-vous être informé des modifications apportées à la base de données non effectuée par votre application? Ensuite, la réponse est la suivante: Aucun EF ne fournit aucun système de notification de ce type. Vous devez construire votre propre.

Voulez-vous être informé des modifications apportées à vos entités? La réponse est INOTIFYPROPERTYCHANGED interface et Observablecollectio N pour les propriétés de navigation. Utilisez ces constructions dans vos entités pour pouvoir tirer des événements lorsque l'entité change.

Voulez-vous savoir quels changements seront exécutés dans la base de données? Supprimer SAVECHANGES ou gérer Économie d'enregistrement et utilisez ObjectStatManager pour obtenir la liste des entités modifiées. ici est un exemple comment obtenir la liste des entités ajoutées de type donné.


0 commentaires

5
votes

the Entity de package NugeFramework.triggers bien entoure la fonctionnalité de l'abonnement à une entité pour les insertions, mises à jour et suppressions.

Il suffit de envelopper votre contexte avec les dbcontextwithTriggers; p> xxx pré>

puis abonnez-vous aux événements de déclenchement p>

var mycontext  = new MyContext() { TriggersEnabled = true };
Triggers<Person>.Inserting += entry =>
{
    Console.WriteLine($"Person: {entry.Entity}");
};


0 commentaires