0

我们可以使用 Update() 或 SaveorUpdate() 等将 Detached 对象的状态遍历到 Persistent 状态。这意味着 nHibernate 以某种方式跟踪 Detached 对象。我首先认为它可能会将分离的对象保存在内存中。但是当我遇到这个声明时,我感到很困惑:

您可以在处理完每个对象后立即 Evict() (在遍历查询结果时),从而防止内存耗尽。 参考:NHibernate 在行动

前提是: Evict() 用于从 Persistent 遍历到 Detached 对象。

在上面的语句中:“从而防止内存耗尽。 ”给出了一个概念,好像分离的对象没有在内存中维护。那还有哪里?

4

1 回答 1

0

是的,Evict从一级缓存中删除实体。

“分离”只是意味着该对象与会话无关。它不在任何会话的一级缓存中。

SaveOrUpdate将对象添加到第一级缓存,并安排在下一个缓存中插入或更新它Flush

于 2013-11-12T16:39:16.367 回答