前兩天爲了給代碼作一些事務封裝,寫了個小Demo,用TransactionScope代碼塊實現。數據庫
第一條更新成功後第二條刻意拋出異常,結果發現第一條總執行成功,這不符合預期,因而開始一步步跟蹤調試。調試
發現是由於我爲了更新先後有個對比,更新前把數據打印出來了,查詢時候打開了數據庫鏈接,而這個鏈接沒有關閉,被後面的更新複用了,這就是問題所在。事務
TransactionScope 實現事務,必須在代碼塊範圍內打開數據庫鏈接,這樣才能保證被登記到事物裏面,不然是不生效的。 io