2011-11-07 56 views
3

如果這是重複的,我很抱歉,但是我環視了一下,找不到這個問題。如果會話關閉,NHibernate事務管理

比方說,我有一個NHibernate會話,在它內部,我有一個事務。如果我關閉會話,是否可以安全地假定事務被提交/回滾(取決於事務中發生的事情的具體情況)?

謝謝!

+0

您的會話是否由執行提交或回滾的相同線程關閉? –

+0

儘管它全部是相同的線程,但我想我要問的是如果我除了最初創建它之外沒有對事務進行任何操作而關閉會話,會發生什麼情況。 – leeny

回答

1

NHForge.org

,當它被設置 ,除非顯式調用提交或回滾已經發生 的ITransaction將執行隱式回退。這種隱式回滾可能表明缺少對 Commit的調用,所以它generates an alert in NHibernate Profiler。如果您打算回滾,請明確執行。你的代碼將會更容易理解 。

+0

爲了澄清,如果我正在處理會話,那麼事務會回滾並處理,然後纔會處理會話。那是對的嗎?謝謝! – leeny

3

通常,如果您在該會話中創建會話和事務,那麼除非發出提交,否則所做的更改(如果有)不會影響底層數據庫。否則,事務被回滾。從我從你的案例中瞭解到的情況來看,你並沒有提交提交,所以你的交易將被回滾。