我一直在研究 NHibernate for ASP.Net 应用程序(Webforms)的事务管理。我发现的大多数文章都倾向于支持按请求事务处理的方法。虽然我了解每个请求的会话,并且完全赞成它。但是,我并不完全理解每个请求的事务背后的原因。
我的应用程序使用版本字段进行并发检查。如果抛出了一个问题,比如 StaleObjectException,或者其他任何东西,一旦你调用Transaction.Commit()
. 我的问题是,如果这是在请求的末尾,你不能轻易知道哪个方法实际上有问题的代码,并且很难从问题中回滚。
例如,在 StaleObjectException 中,通常只需使用更新的数据重新运行该方法。
关于此的任何想法,以及交易管理的任何实践?根据业务逻辑,我倾向于支持尽可能多的交易。多个事务的问题是实际开始/结束事务的位置。