我知道nhibernate不支持嵌套事务。
让我说我有这样的事情:
在#3.3中调用commit时会发生什么?是否提交了事务?我需要一切成功或失败。
答案 0 :(得分:0)
是。 3.1中的BeginTransaction调用将不会执行任何操作,因为已存在活动事务。如果您希望所有操作都参与同一事务,则不要在3.x和4.x中调用Begin / End Transaction。
我的建议是不要在服务或存储库类中使用事务。我要么在UI级别控制事务,要么创建一个封装业务流程的类。
答案 1 :(得分:0)
正如Jamie所说,交易应该在更高的层次上进行管理以避免这种情况。
但是,如果必须出于某种原因将保持在“服务”级别,您可以将所有内容包装在TransactionScope
中,您将Complete()
只有在一切都成功之后。