nhibernate - 强制惰性实体加载真实实例

标签 nhibernate lazy-evaluation

我有一个懒惰实体的代理,该懒惰实体是通过加载子实体在 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/

相关文章:

nhibernate - CaSTLe、LinFu 和 Spring 与 NHibernate 是什么关系?

python - 如何避免在 python 中作为参数传递时进行惰性属性评估

lazy-evaluation - idris 真的是 "strictly evaluated?"

haskell - 关于 Project Euler 14 的 Haskell 解决方案的问题

c# - NHibernate 标准按一天中的时间搜索

c# - NHibernate 异常 "Session is closed! Object name: ' ISession'。”

c# - 在 Fluent Nhibernate 的 AsMap 中使用 Component 作为 IDictionary 索引

c++ - 延迟插入/删除

c# - 从方法返回 Lazy<Stream> 是否是推迟打开 FileStream 的成本的好主意?

c# - 让NHibernate透明的存储一个字节数组到文件系统或者S3