過去,我使用TransactionScope和桌面客戶端應用程序來回滾不完整的多步事務。這種方法似乎不太可能在Web應用程序中起作用。跨多個HTTP請求的多步數據庫事務拆分
任何人都可以建議如何確保多個步驟,跨幾個頁面,如果整個過程未完成可以確保回滾? (他們的瀏覽器崩潰或者關閉瀏覽器在中間過程爲例)
當然,我會寫信給某種形式的臨時表,然後在一個事務中的最後記錄轉移到真正的表,但是執行競爭條件的風險。我想開始一個事務,提供多個頁面,每個頁面將一部分事務寫入表格,然後用一個提交完成事務,並且如果事務沒有完成,那麼當事務被回滾時會話結束。
或者我不是在想正確的方法?建議?由於我使用的是MVC 3,EF 4.1和Ninject,我不確定這將如何影響解決方案,但我想我會包含這些信息。
這意味着你必須手動處理併發。這對我來說似乎是一種代碼味道。 –
在Web應用程序中手動處理併發性非常普遍。數據庫事務應儘可能短 - 在大多數常見情況下,小數秒。你想做什麼意思數分鐘數據庫密集型鎖定=您的應用程序將執行糟透了。 –