0
我使用NHibernate和Fluent NHibernate並註冊一個類型爲SaveOrUpdate的Eventlistener。Eventlistener(在Fluent NHibernate註冊)阻止更新數據庫
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();
}
}
但數據庫不更新(這工作正常,沒有監聽註冊)。任何幫助表示讚賞。