0

上下文:我正在开发一个 .NET 3.5 Windows 应用程序,一旦 RAM 被 NHibernate 一级缓存完全填满,该应用程序就会崩溃。

问题 1:NHibernate 的 1 级缓存算法是否会执行内存检查以确保存在足够的空间?

问题2:使用Evict方法时,以下伪代码步骤是否正确?

1 - session.Query

2 - 保存查询结果

3 - session.Evict

4 - 返回保存的结果

更新

在应用程序开始时创建会话并且仅在应用程序结束时才释放会话的上下文中,我希望控制 NHibernate 的一级缓存大小。NHibernate 文档详细解释了缓存的工作原理以及如何管理它,但没有提及缓存大小,这在我的情况下是一个问题。

问题3:是否可以知道会话的缓存大小(如果需要,随后清除它)?或者,是否可以对 Nhibernate 可以在应用程序范围内使用的缓存大小设置限制?

4

1 回答 1

1

通常,您不应为您的应用程序使用单个会话。通常,您应该为每个工作单元创建一个。桌面应用程序中的会话管理有多个示例 一二

于 2015-08-17T16:17:47.067 回答