我想知道如果一段代码试图在没有开始事务的情况下将对象保存到数据库,我们是否可以扩展NHiberate如何抛出异常?由于开始事务是调用Save()以使其正常工作的要求,所以我看不到程序员在没有首先开始事务的情况下调用Save()。
答案 0 :(得分:2)
解决方案不在抛出异常中。它是关于让我们(项目开发人员)知道 和我们正在做什么
1)项目共享方法。首先,向团队解释应用程序架构的工作原理。现在所有团队成员都应该有Unit of Work或Session per Request模式。
2) FlushMode 。其次,解释Session对象的概念。 ISession. Save()
或Update()
远离SQL执行INSERT
或UPDATE
。 ISession.Flush()的重要性是多少。并且(基于第一步)我们可以决定何时发生 Flush()。
我建议将FlushMode设置为Commit
或None
(带有明确的调用)。然后,如果团队成员想要执行任何编写命令 - 一个标准位置,一种常用方式(在项目中使用)将指导hin /她。
电话Session.Flush()
应/将/必须包含在transaction
。