我有一個編輯模型類型M1的對話框D1和編輯模型類型M2的另一個對話框D2。 M2包含的內容之一是對M1的引用,並且爲了便於用戶D2包含啓動D1的按鈕,除了可以從頂層訪問D1和D2之外。在ActiveRecord中需要嵌套事務的嵌套UI
D1和D2中的每一個在輸入時創建TransactionScope
(使用TransactionMode.New
),當用戶與對話交互時修改模型對象(M1或M2),並在用戶按下確定/取消時適當提交/回滾鈕釦。
從頂層打開對話框時,此功能可以很好地工作。
當從D2內打開D1時,預期的行爲是單擊D1中的確定應立即保存到數據庫,然後M1中的更改應該對D2可見。 (D2然後可以保存或取消自己的M2的變化不影響M1)
什麼實際發生的是,改變M1似乎D1關閉時將得到保存到數據庫(與前D2關閉),但D2無法看到對M1的更改 - 大概是因爲D2中的會話/事務認爲它具有最新的對象,因此不會重新查詢數據庫,即使調用了FindFirst
等也是如此。有沒有辦法強制它(不失去對M2的改變)?
(另一個奇怪的現象是,無論D1 & D2鉤上TransactionScope.OnCompleted
,但D1這隻火災時,D2被關閉時,D1從D2叫的情況。)