0
Fluent NHibernate에서 NHibernate를 사용하고 SaveOrUpdate 유형의 EventListener를 등록합니다.EventListener (Fluent NHibernate에 등록 됨)가 데이터베이스 업데이트를 방지합니다.
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. :
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.ExposeConfiguration(c => c.SetListener(NHibernate.Event.ListenerType.SaveUpdate, new SaveEventListener()))
.BuildSessionFactory();
}
이 리스너는 다음과 같습니다 이 방법의 경우 :
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();
}
}
그러나 데이터베이스가 업데이트되지 않습니다. 어떤 도움을 주셔서 감사합니다.