Gracias por los links, El de Ayende ya lo habia leido pero el otro no. Te cuento que termine usando el IPreCollectionUpdateEventListener y como no pude obtener el snapshot de la entidad termine levantando en otra session la misma entidad y haciendo una consulta linq to objects para obtener las propiedades que se modificaron. No quedo "elegante" pero esta andando.
saludos Jose 2009/12/18 Juan <[email protected]> > Aqui va otro que puede que te ayude... > > http://darrell.mozingo.net/2009/08/31/auditing-with-nhibernate-listeners/ > > > > On Dec 17, 12:00 pm, Jose Ramirez <[email protected]> wrote: > > Hola > > > > Estoy tratando de trackear los cambios que se hacen sobre los valores de > una > > coleccion en una entidad. > > El modelo es mas o menos asi. > > > > public class Equipment > > { > > public ISet<EquipmentProperty> Properties {get; set;} > > //... > > > > } > > > > public class EquipmentProperty > > { > > public Equipment Equipment {get; set;} > > public object Value {get; set;} > > //... > > > > } > > > > Especificamente quiero guardar en una tabla lo siguiente: > > > > Equipo, Propiedad, Valor Anterior, Valor Actual, Fecha > > > > Intente hacerlo con IPreUpdateEventListener que esta re bueno porque > tiene > > State y OldState pero resulta que como Properties es una coleccion el > > listener PreUpdate no se activa al hacer cambios en la coleccion. > > Hasta que llegue al IPreCollectionUpdateEventListener que efectivamente > se > > ejecuta antes de guardar la coleccion. > > Ahora, no encuentro una forma de saber el "viejo" valor de la propiedad > > Value de cada elemento de la coleccion. > > Vi que en OnPreUpdateCollection(PreCollectionUpdateEvent e) el evento > tiene > > informacion de la coleccion en un IPersistentCollection y que ese > > persistentCollection tiene metodos GetSnapshot, etc pero todos me piden > un > > ICollectionPersister como parametro. > > Ahi es donde no se que mas hacer. > > > > Alguien me puede tirar una mano con esto? > > > > Saludos > > > > Jose Ramirez > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
