2010-01-29 34 views
2

我在NHibernate的DefaultUpdateEventListener有問題。 我會更新2個對象,然後我提交會話。NHibernate的DefaultUpdateEventListener和事件的問題

第一個對象沒有進入監聽器,第二個對象沒有進入監聽器。

所以我檢查與反射鏡檢查是什麼問題

首先NHibernate的將調用PerformSaveOrUpdate在DefeultSaveOrUpdateEventListener在那裏,我看到這個

protected virtual object PerformSaveOrUpdate(SaveOrUpdateEvent @event) 
{ 
    switch (this.GetEntityState(@event.Entity, @event.EntityName, @event.Entry, @event.Session)) 
    { 
     case EntityState.Persistent: 
      return this.EntityIsPersistent(@event); 

     case EntityState.Detached: 
      this.EntityIsDetached(@event); 
      return null; 
    } 
    return this.EntityIsTransient(@event); 
} 

兩個對象的differens是國家 第一對象是分離的,第二個持久化是什麼使對象在NHibernate中持久化或分離?

如果我知道這個例子中的區別是什麼,我希望我可以在我的代碼中解決這個問題。

兩個對象的負載與session.Load

回答

1

等於我解決了問題,以實現
公衆覆蓋無效OnSaveOrUpdate(SaveOrUpdateEvent @event)

本次活動將在PerformSaveOrUpdate之前被擊中( SaveOrUpdateEvent @event)

在這個時候,物體是持久的還是分離的並不重要