2010-10-07 3 views
1

J'utilise nhibernate pour accéder à une base de données mysql, et j'ai de nombreuses formes -winforms- utilisant la liaison de données pour modifier les propriétés de ces objets. Il existe de nombreux objets -nhibernate- créés/supprimés aussi pendant le temps où ces formulaires sont utilisés.Implémenter un bouton "annuler" sur les formulaires qui utilisent la liaison de données et nhibernate

J'ai besoin d'implémenter un bouton "Annuler" sur ces formulaires.

Je peux différer la création/suppression d'objets sur la base de données (nhibernate's Session.Save/Delete) au moment où le formulaire se ferme. Mais je ne sais pas quoi faire au sujet de la modification des propriétés des objets chargés directement par l'utilisateur (modifié par winforms databinding) ou l'ajout/suppression d'objets aux collections d'objets connexes. Je ne suis pas du tout un expert en nhibernate. Est-il possible de marquer un objet référencé comme « non encore chargé », pour forcer une actualisation de la base de données la prochaine fois qu'il est fait référence de quelque façon que (collections et propriétés) sans perdre la référence (sorte de renvoyer la référence à l'objet proxy à l'état initial, avant le premier chargement de la DB)? Je ne suis pas un expert de winforms du tout ni l'un ni l'autre. Comment puis-je savoir quels objets ont été modifiés via la liaison de données?

Répondre

1

je suppose une approche simple serait d'utiliser INotifyPropertyChanged sur vos entités et INotifyCollectionChanged ou utiliser une collection qui implémente déjà. Ensuite, vous pouvez vous abonner à ces événements et, au moins, savoir s'ils ont changé.

Dans tous les cas, c'est un aspect de la présentation que j'aimerais vraiment entendre.