当我:
if (nhsession.Contains(myobj))
nhsesion.Evict(myobj)
在Evict
方法调用中,我收到此错误:
{"Object reference not set to an instance of an object."} ????????
使用此stacktrace:
at NHibernate.Event.Default.EvictVisitor.EvictCollection(IPersistentCollection collection)
at NHibernate.Event.Default.EvictVisitor.EvictCollection(Object value, CollectionType type)
at NHibernate.Event.Default.EvictVisitor.ProcessCollection(Object collection, CollectionType type)
at NHibernate.Event.Default.AbstractVisitor.ProcessValue(Object value, IType type)
at NHibernate.Event.Default.AbstractVisitor.ProcessValue(Int32 i, Object[] values, IType[] types)
at NHibernate.Event.Default.AbstractVisitor.ProcessEntityPropertyValues(Object[] values, IType[] types)
at NHibernate.Event.Default.AbstractVisitor.Process(Object obj, IEntityPersister persister)
at NHibernate.Event.Default.DefaultEvictEventListener.DoEvict(Object obj, EntityKey key, IEntityPersister persister, IEventSource session)
at NHibernate.Event.Default.DefaultEvictEventListener.OnEvict(EvictEvent event)
at NHibernate.Impl.SessionImpl.FireEvict(EvictEvent evictEvent)
at NHibernate.Impl.SessionImpl.Evict(Object obj)
at NewCash.UI.Presenters.OperazioneIRSPresenter.UserAction(String Action) in C:\AkrosProduzione\NewCash4\src_4\NewCash.UI\Presenters\OperazionePresenter\OperazioneIRSPresenter.vb:line 230
似乎NHibernate evict
试图驱逐一个空集合,如何在不必初始化对象的所有集合属性的情况下避免这种情况?或者是否存在我误解的问题?
答案 0 :(得分:0)
看起来像Rippo链接的错误。
然而,即使它是一个错误,最好将集合属性初始化为模型类的构造函数中的空集合。那么每次访问时检查空集合并更改集合类型(例如装饰它)都没有必要,只有一个地方可以更改它。