NHibernate Evict抛出一个未设置为对象错误实例的Object引用

时间:2012-03-07 16:08:13

标签: c# nhibernate

当我:

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试图驱逐一个空集合,如何在不必初始化对象的所有集合属性的情况下避免这种情况?或者是否存在我误解的问题?

1 个答案:

答案 0 :(得分:0)

看起来像Rippo链接的错误。

然而,即使它是一个错误,最好将集合属性初始化为模型类的构造函数中的空集合。那么每次访问时检查空集合并更改集合类型(例如装饰它)都没有必要,只有一个地方可以更改它。