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