【发布时间】:2009-06-19 09:06:39
【问题描述】:
这是一个常见问题,但目前发现的解释与观察到的行为存在一定差距。
我们希望在 MVC 网站中使用以下 nHibernate 策略:
-
SessionScope用于请求(用于跟踪更改) -
ActiveRecord.TransactonScope仅用于包装我们的插入(以启用批处理的回滚/提交) - 选择在事务之外(以减少锁定范围)
- 延迟刷新插入(以便我们的插入/更新在会话结束时作为 UoW 发生)
现在我们:
- 不要从
SessionScope获取隐含事务(使用 FlushAction Auto 或 Never) - 如果我们使用
ActiveRecord.TransactionScope,则不会延迟刷新,并且任何包含的选择也会陷入长时间运行的事务中。
我想知道是不是因为我们有一个旧版本的 nHibernate(它来自非常接近 2.0 的主干)。
我们只是无法获得预期的 nHibernate 行为,而且性能很差(使用 NHProf 和 SqlProfiler 来监控数据库锁)。
【问题讨论】:
标签: nhibernate activerecord nhprof