我有一个懒惰实体的代理,该懒惰实体是通过加载子实体在 session 中创建的。对父实体的后续提取仅返回NH代理。我需要实际实例来检查类型(实体已加入子类)。我一定想念一些东西,但是我找不到办法。 Session.Refresh(proxy)似乎没有帮助,我尝试过的HQL也没有帮助。
有人可以帮忙吗?
最佳答案
要强制从数据库中获取代理,可以使用NHibernateUtil.Initialize(proxy)
方法,或访问代理的方法/属性。
var foo = session.Get<Foo>(id);
NHibernateUtil.Initialize(foo.Bar);
要检查对象是否已初始化,可以使用
NHibernateUtil.IsInitialized(proxy)
方法。更新:
要从 session 缓存中删除对象,请使用
Session.Evict(obj)
方法。session.Evict(myEntity);
可以在NHibernate文档的chapter 14.5中找到有关
Evict
和其他用于管理 session 缓存的方法的信息。
关于nhibernate - 强制惰性实体加载真实实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1204309/