I’m looking for a solution in order to perform some “Entity History”.
Basically i’ve a domain like this:
public class Order
{
public virtual int OrderId { get; set; }
public virtual DateTime Date { get; set; }
public virtual ICollection<OrderItem> Items { get; set; }
public virtual int Version { get; set; }
}
public class OrderItem
{
public virtual int OrderItemId { get; set; }
public virtual Order Order { get; set; }
public virtual Product Product { get; set; }
public virtual int Quantity { get; set; }
public virtual int Version { get; set; }
}
I need to keep history of these entities in order to prevent from dependent entities updates like product changes (names, etc..)
So i want to create a new entity on each save/update with an updated version number.
My repository method GetOrderById should take care of entity versions and take the latest version or a specific version if specified.
How can i perform that? Maybe using NHibernate Interceptors?
You can use evenlisteners. You can use it to get different behavior for the loads and save/delete/updates.
Eventlisteners for data audit