這個問題純屬AR相關。Active Record/Nhibernate TransactionScopes問題
假設我的web/wcf應用程序中有2層--DataLayer和BusinessLayer。 DataLayer包含幾乎在映射上工作的原子操作(查找,獲取,保存,特殊查找,交叉查找等:))。有很多HQL或Criterias。這一層沒有使用SessionScopes。我的一些映射包含懶惰集合。
現在,BL層具有包含與DL調用混合在一起的業務邏輯的方法 - 這很正常。對於每個只有只讀操作的公共方法,我都指定了SessionScope(FlushAction.Never)。對於所有那些有一些保存或更新操作的方法,我使用TransactionScope(),裏面帶有try catch,方法結束時有直接的VoteCommit,catch子句中有VoteRollback。我將ReadCommitted設置爲isolationLevel。
對於基本情況這個工作。當我編寫使用其他方法和自己的事務的方法時,我開始遇到真正的問題 - 我正在談論鎖。例如,我有事務遞歸的方法。 似乎某些'讀取'方法(擁有自己的SessionScope(FlushAction.Never))由於其他事務而被阻塞。
我不能確切地追查究竟是什麼錯誤,但我開始認爲我有一些主要的設計問題。
城堡網站上的幫助對我來說並沒有多大的幫助,同時在AR源中也有測試 - 它們對我來說太簡單了。
任何人都可以真正解釋我應該如何使用TransactionScopes或什麼是我的錯誤?
你在用溫莎嗎? – 2010-07-27 12:47:15
不是。你有什麼建議? – IamDeveloper 2010-07-27 15:04:59