我在对象中使用了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。不知怎的,它无法识别自己的代理。