NHibernate懒惰加载懒惰=额外没有会话或会话被关闭

时间:2012-12-17 10:17:11

标签: nhibernate nhibernate-mapping lazy-loading lazy-initialization

我有一种奇怪的行为,我几天都找不到任何解决方案.. 我遇到的行为是经典LazyInitializationException no session or session was closed 当没有上下文会话并尝试访问延迟加载的属性/集合时,这是常见的,但这不是我的情况,因为我有:

  • 以Spring.NET OpenSessionInViewModule
  • 为界的每请求会话数
  • 会话已打开并且与上下文(Web请求)相关联
  • 带有lazy =“extra”或“set”(映射集合)的集合为“list”(映射列表集合)的实体(该问题主要是由lazy = extra ...引起的。)
  • 似乎可以完成额外cound的Count语句,但访问整个集合会抛出异常

调查常见问题后:

  • 没有开会话
  • 该对象不受任何会话限制
  • Session.ClearSession.Evict进行了调用(因此对被驱逐的实例任何懒惰都会有效)
  • Spring.NET WebSupportModule未注册

    我没有发现为什么会发生这种情况的明确原因。 一个奇怪的行为是如果我在NHprof中进行分析,我会在新会话中看到异常,换句话说,上下文会话正常工作, 但是当抛出异常时,该异常在辅助会话中可视化..但是没有代码打开会话,并且单个上下文会话 打开..

任何人都知道其他原因会导致这样的情况吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

如果没有看到某些代码就很难诊断,但问题听起来很very similar to this。在链接的情况下,除了在另一个位置设置会话上下文(类似于前两个项目符号点)之外,还使用了OpenSessionInView,并且未注册WebSupportModule(如最后一点)。

另一方面,我对Spring.NET一无所知。