How to save a copy of an existing object with Nhibernate upon update
===

Title says it all really, I have an existing entity which is being updated by Nhibernate, through **Session.SaveOrUpdate(entity)**

Now, everytime an *existing* entity is updated, I would like to get nhibernate to first grab the existing record, mark it as 'deleted' through a flag and only then update the record, so that way I have a history of changes on the entity.

My current thought would be implementing an OnPreUpdate eventlistener and save the existing object there, but I'm not 100% sure this is going to work or is indeed the way to do this correctly.

Any thoughts?