我们在我工作的地方遇到了问题。当我们尝试从 MVC3 视图中访问 NHibernate 实体上的延迟加载属性时,将抛出“No Session” LazyInitializationException。这只是在上周才开始出现在我们身上,但我们一直无法缩小问题的范围。不过,似乎没有一个简单的解决方案。
备注:
- 堆栈跟踪示例:http: //textsnip.com/613608
- 我们不会在项目中的任何地方处理(或将会话包装在使用中)。我们让 ObjectFactory 处理它。
- 这仅在我们的 TeamCity 测试环境中运行回归测试(带有 WatiN 的 SpecFlow)时发生。我们没有人能够在我们的开发机器上重现该问题。
- 这也不会始终如一地发生。虽然失败的测试通常是相同的测试,但它们不会一直失败。访问会命中某些相同视图的页面的其他测试不会失败。
- 在确实失败的测试中,它们似乎更倾向于延迟加载集合初始化而不是非集合,但两者都发生了。
- 虽然我知道尽可能提前加载实体会更好,但由于我们的许多表模型相互依赖,目前还不是那么可行。
我们在这里缺少什么?