我看到有2分可能的情况作为对会话处理:每次请求如何处理ASP.NET WebForms应用程序中的NHibernate会话?
- 打开一个单一的Isession。在请求开始时打开它并在请求结束时关闭它。
- 按概念“工作单元”打开一个ISession。为请求创建了许多会话。
方法#1是我现在正在做的。我有点担心,因为虽然它有效,但调试有点困难。例如,我有一个对象没有被保存(即使我命令它),而且我在调试时遇到了麻烦,因为在完整的请求生命周期中发生了很多事情。
方法#2似乎是标准的最佳实践(不确定关于ASP.NET),我相信调试起来更容易。我看到的问题是关于会话间通信。例如:My Page类持有对用户的引用,这是一个持久对象。许多操作接收用户作为参数。由于用户属于不同的会话,因此我无法将其作为参数传递。
我偏向于#2,但我不知道这是否是最佳做法,也不知道如何处理跨会话对象。
谢谢。
为什么很难调试? – Paco 2010-07-16 11:58:19