0 votes

Déterminer quels champs ont été modifiés lors de la liaison

Comment puis-je déterminer quels champs ont été modifiés après la modification du modèle ?

1voto

Robert Harvey Points 103562

Si vous utilisez Linq to SQL, la méthode GetModifiedMembers prend un argument de type Object et renvoie un tableau d'objets System.Data.Linq.ModifiedMemberInfo. Chaque classe de table du DataContext possède une méthode GetModifiedMembers qui peut être invoquée sur n'importe quelle entité.

http://msdn.microsoft.com/en-us/library/system.data.linq.itable.getmodifiedmembers.aspx

Dans Entity Framework, en utilisant ObjectStateManager, on peut accéder à toutes ces informations de changement comme l'état de l'objet (ajouté/modifié/supprimé), les propriétés modifiées, les valeurs d'origine et actuelles.

IEnumerable<ObjectStateEntry> changes = 
        this.ObjectStateManager.GetObjectStateEntries(
        EntityState.Added | EntityState.Deleted | EntityState.Modified);

1voto

jrista Points 20950

Vous pouvez implémenter INotifyPropertyChanged sur vos entités. Vous auriez besoin de déclencher l'événement PropertyChanged pour chaque propriété... il y a donc un peu de refactoring à faire pour que cela fonctionne. C'est le seul moyen intégré pour y parvenir avec .NET.

Si vous ne souhaitez pas implémenter INotifyPropertyChanged manuellement, vous pouvez utiliser PostSharp pour mettre à jour vos classes et ajuster vos propriétés au moment de la compilation. Cependant, cela nécessiterait un effort beaucoup plus compliqué au départ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X