在Nhibernate中检测和附加代理

时间:2011-12-09 14:48:59

标签: nhibernate lazy-loading

我在对象中使用了lazy属性。 1)我需要加载没有该属性的对象,将其从会话中分离出来。 2)然后我需要将此对象重新连接到新创建的会话并加载该属性。

所以,我从数据库中获取数据(1):

 return session
                .CreateCriteria<DataResource>()
                .List<DataResource>()
                .ToArray();

我试图重新连接并完成(2):

using (ISession session = GetSessionFactory().OpenSession())
        {
            session.Update(dataResource);
            NHibernateUtil.Initialize(dataResource.Value);
        }

如果懒惰是在一对多链接上 - 一切正常。 (1)step返回我的真实对象,将代理设置为该属性,并在(2)步之后将其变为真实对象。 但是,如果我需要在属性上懒惰,似乎NHibernate无法用真实对象处理它。而不是它在步骤(1)之后返回代理。在步骤(2)中,它抛出了MappingException:在.Update()行上没有persister:Castle.Proxies.DataResourceProxy。不知怎的,它无法识别自己的代理。

1 个答案:

答案 0 :(得分:0)

您可以在从会话中分离之前取消对象。 要取消注释,请参阅链接

NHibernate Get objects without proxy