假設我有一個處理匯款的應用程序。.NET中的應用程序崩潰和事務處理
try {
transaction.Commit();
} catch {
transaction.Rollback();
}
現在會發生什麼,如果事實證明,提交已被取消,因某種原因取消或回滾處理之前的程序崩潰? 如何編寫我的應用程序,以便它對程序崩潰具有強大的功能。
編輯: 如果我沒有SQL後端,並且事務是我自己實現的東西?
假設我有一個處理匯款的應用程序。.NET中的應用程序崩潰和事務處理
try {
transaction.Commit();
} catch {
transaction.Rollback();
}
現在會發生什麼,如果事實證明,提交已被取消,因某種原因取消或回滾處理之前的程序崩潰? 如何編寫我的應用程序,以便它對程序崩潰具有強大的功能。
編輯: 如果我沒有SQL後端,並且事務是我自己實現的東西?
你的設計是好的(即使非常簡約,在它沒有實際的例子...)
,你可以想像,一旦你打電話var transaction = connection.BeginTransaction();
如果你不叫提交事務不會得到承諾讓捕獲將回滾。
如果由於任何原因崩潰阻止執行catch塊自動回滾將由SQL引擎應用。
Db中的數據持久性將僅在之後達到Commit是成功的。所以如果您的Commit在任何位置失敗,數據將不會寫入數據庫。
你的「如果」會使一切無效......如果你沒有數據庫,並且你實現了一個叫胡蘿蔔的對象(或者事務,對我們來說也不清楚),你應該更多地指定你的胡蘿蔔類所做的事情,繼承了什麼以及它是如何實現的! –