Castle ActiveRecord SessionScopeWebModule异常处理

时间:2010-12-08 07:13:06

标签: nhibernate orm exception-handling castle-activerecord

我有一个启用了SessionScopeWebModule的Web应用程序,我想知道如何 最好地处理业务异常(不是Hibernate / DB异常)。

我相信AR 2.0 SessionScopeWebModule隐式实现 transaction - 如果在请求期间发生异常,则进行更改 在会话期间将被丢弃/回滚。

对于我的Web应用程序,业务层将与数据库一起发布,发布 几个CRUD,比如说

  • 创建实体A
  • 创建实体B

说实体A已创建。但是在创建实体B时有些 没有遵守业务规则,业务层抛出了 商业例外。

从UI角度来看,最好“处理”业务异常 并向用户显示友好消息。这就是 问题在于。如果已经处理了异常, SessionScopeWebModule认为一切都很好 请求结束并将实体A提交到数据库中,而不是 实体B.

在这种情况下处理异常的最佳做法是什么?我 考虑将为每个新重置的会话变量 请求。如果发生异常,变量将标记为脏。 请求结束时,SessionScopeWebModule将首先检查 会话以查看是否发生了任何异常。如果是这样,它将调用一个 FailSession。

这是要走的路吗?并且FailSession会做丢弃的工作 更改会话?

谢谢!

博彦

1 个答案:

答案 0 :(得分:0)

在网站上http://www.summerofnhibernate.com/我已经关于这个主题(这是第13部分)的网络聊天,但直接使用NHibernate(没有ActiveRecord)。我解释了Session如何以及为什么保存/刷新以及如何阻止它执行此操作。也许该视频的信息可以帮助您。

问候 Juy Juka