2009-12-23 28 views
0

我遇到了NHibernate的問題。該錯誤消息是:Nhibernate:未初始化的代理傳遞給保存

未初始化代理傳遞給保存

[PersistentObjectException: 未初始化代理傳遞給保存()。 對象: ...... Domain.Model ......] NHibernate.Event.Default.DefaultSaveEventListener.ReassociateIfUninitializedProxy(對象 OBJ,ISessionImplementor源)104 NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate (SaveOrUpdateEvent 事件)+90
NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent 事件)+156
NHibernate.Impl.SessionImpl.SaveOrUpdate(對象 OBJ)+152

所以我要做的就是,我有一個聚合根在那個對象的集合中。保存更改時,我只保存聚合根目錄。子類沒有引用聚合根。

<bag name="Children" cascade="all-delete-orphan" where="IsDeleted = 0" lazy="true"> 
    <key column="abcId"/> 
    <one-to-many class="abc"/> 
    </bag> 

現在,當我收集了一些兒童被從UI像保存時出現錯誤:

root = repository.GetRootById(id) 

    // collect children from data list 
    abc = repository.GetAbcById(abcId) 
    abc.Name = textName.Text; 
    ... 

    // no root.Children.Add(abc) is performed here, since abc already is a child of root  

    repository.Save(root); 
    ... 
    Exception occurs 

現在,如果我訪問root.Children保存之前,它的工作原理。

有人嗎?

回答

0

修復它..根未初始化,因爲在存儲庫.GetRootById(..)我用session.Load而不是session.Get。所以根永遠不會加載...

相關問題