Skip to content

Instantly share code, notes, and snippets.

@MikeLarned
Created June 10, 2014 19:18
Show Gist options
  • Save MikeLarned/8fe8309636ed165838c9 to your computer and use it in GitHub Desktop.
Save MikeLarned/8fe8309636ed165838c9 to your computer and use it in GitHub Desktop.
NHibernate ModifiedTimeStampListener
using System;
using System.Web;
using NHibernate.Event;
using NHibernate.Persister.Entity;
namespace MyProject.Infrastructure.NHibernate.Listeners
{
public class ModifiedTimeStampListener : IPreUpdateEventListener, IPreInsertEventListener
{
public bool OnPreUpdate(PreUpdateEvent @event)
{
var entity = @event.Entity as Entity;
if (entity == null)
return false;
entity.TimeStamp = DateTime.UtcNow;
Set(@event.Persister, @event.State, "TimeStamp", entity.TimeStamp);
return false;
}
public bool OnPreInsert(PreInsertEvent @event)
{
var entity = @event.Entity as Entity;
if (entity == null)
return false;
entity.TimeStamp = DateTime.UtcNow;
Set(@event.Persister, @event.State, "TimeStamp", entity.TimeStamp);
return false;
}
private void Set(IEntityPersister persister, object[] state, string propertyName, object value)
{
var index = Array.IndexOf(persister.PropertyNames, propertyName);
if (index == -1)
return;
state[index] = value;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment