如果我不调用transaction.colose或transaction.rerollback会发生什么



在工作单元开始时,我调用会话。开始平移我注意到,即使在事务期间没有对数据库进行任何更改,提交仍然是昂贵的。

如果没有更改,我只调用session.close,而不调用transaction.commit,会发生什么?交易是否仍在处置

我已经检查了NHibernate 3.1.0的源,似乎调用ISession.Close()应该会为默认实现生成ITransaction.Dispose()。但是,在现有应用程序中使用它并不会导致显式事务commitrollbackNHibernate Profiler一起检查。

我认为让事务只依赖ISession.Close()不是一个好主意,因为它可能会导致不可预测的行为。如果有人会采用这种特殊的方法,并将ISession.SaveOrUpdate。。。您的实体将不会持久化。

更新

Sql Server的角度来看,我认为这取决于您的事务isolation level,但我敢肯定,您迟早会遇到锁定或超时。请参阅本sql-server具体问题:

当连接关闭时,未提交的事务会发生什么?

相关内容

最新更新