Why not use the IPreUpdateEventListener or simply an transaction? 2009/6/22 FrederikGheysels <[email protected]>
> > Well then, why not implement some undo - functionality that is based > on reflection & serialization ? > Create a BeginChanges, AcceptChanges and CancelChanges on your object. > When you display the object using databinding, you call BeginChanges. > When you want to cancel the changes, call CancelChanges so that the > object's state is reverted ? > > In the BeginChanges method, you can find all fields using reflection, > save their state in a hashtable, etc.... > When you Cancel the Changes, get the hashtable, loop over it, and set > the values of all the fields back to the value that you find in the > hashtable for that field ... Offcourse, this is not so simple, > especially with collections (I don't even know if it is possible out > of the box, I think that you will have to create a user-type for > NHibernate). > > On 22 jun, 15:39, "Yevhen Bobrov" <[email protected]> wrote: > > Frederic, will all respect it is not viable to delay data binding in big > > enterprise application with myriad of objects. This will require an > enormous > > amount of code to implement temporal storage of state for each object or > > collection or reference. This what data binding for - to ease > manipulation > > of object state. Either you will need to duplicate all validation logic > and > > all of behavior in your intermediate objects or dumb down screen to > stupid > > "input form with DTO's underneath", as in this scenario you can't touch > real > > objects before commit. > > Delaying modifications to object state is only a viable option for very > > small apps. > > > > > > > > -----Original Message----- > > From: [email protected] [mailto:[email protected]] On > Behalf > > > > Of FrederikGheysels > > Sent: Monday, June 22, 2009 4:23 PM > > To: nhusers > > Subject: [nhusers] Re: deep copy aggregate root > > > > Well, you can implement an N-level Undo functionality (like I referred > > to in my post), or , you can 'delay' the databinding on your WinForms > > app to get a solution for your problem. > > My first idea was to implement N-level undo functionality (which I've > > done) on my base-entity class, but after a little bit of playing with > > it, I thought it was overkill. (Some of my entities have associations > > to other entities, etc... so a lot of data would be serialized). > > Next to that, I didn't want to make all my entities serializable, so I > > came up with another solution; that is: delaying the 2-way > > databinding. > > This problem is not directly related to NH, although I do find it a > > pity that NH commits the changes you made to an entity when you flush > > the session, even if you did not call 'SaveOrUpdate' for that entity. > > > > On 20 jun, 17:35, Yevhen Bobrov <[email protected]> wrote: > > > It is. It is not about NH problem but about what happens when changes > > > are applied directly to the object and there is need to cancel them. > > > This is what happens in usual WinForms application. > > > > > On 20 июн, 18:15, Fabio Maulo <[email protected]> wrote: > > > > > > 2009/6/20 Yevhen Bobrov <[email protected]> > > > > > > > BTW, Frederik talks about such kind of problem here > > > > >http://fgheysels.blogspot.com/2009/06/winforms-databinding-on-cancell. > .. > > > > > > That is not a post about a problem, that is a post about a UI > solution > > and > > > > as you can see there is no reference about the persistent-layer and > no > > > > reference about the usage of Clone. > > > > Frederik had the good spirit, even showing the n-level-undo > capability > > of > > > > CSLA (where, another time, the persistence-layer has nothing to do). > > > > > > We'll wait your example showing your problem in detail; after have it > we > > can > > > > talk about a solution if you can't find it. > > > > > > -- > > > > Fabio Maulo > > > > __________ Information from ESET Smart Security, version of virus > signature > > database 4174 (20090620) __________ > > > > The message was checked by ESET Smart Security. > > > > http://www.esetnod32.ru > > > > __________ Information from ESET Smart Security, version of virus > signature > > database 4174 (20090620) __________ > > > > The message was checked by ESET Smart Security. > > > > http://www.esetnod32.ru > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
