Я использую NHibernate с Fluent NHibernate и регистрирую Eventlistener типа SaveOrUpdate.
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.ExposeConfiguration(c => c.SetListener(NHibernate.Event.ListenerType.SaveUpdate, new SaveEventListener()))
.BuildSessionFactory();
}
Слушатель выглядит так:
public class SaveEventListener : ISaveOrUpdateEventListener
{
public void OnSaveOrUpdate(SaveOrUpdateEvent _event)
{
object entity = _event.Entity;
if (entity is CreatableEntity)
{
CreatableEntity cEntity = entity as CreatableEntity;
if (cEntity != null)
{
if (cEntity.IsNew)
{
cEntity.TimeStamp = TimeStamp.New();
}
else
{
cEntity.TimeStamp = TimeStamp.Updated(cEntity.TimeStamp);
}
}
}
}
}
Слушатель успешно называется f.ex. в этом методе:
public void Create(string firstName, string lastName, string organization)
{
session = GetCurrentSession();
ITransaction transaction = session.BeginTransaction();
try
{
Person person = new Person(firstName, lastName, organization);
session.SaveOrUpdate(person); //at this point
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
finally
{
session.Close();
}
}
НО база данных не обновляется (это прекрасно работает без регистрации слушателя). Любая помощь приветствуется.