我有一種情況,我在.NET中使用事務範圍。TransactionScope是在同一事務中的讀取數據庫更新
其中有多個方法調用,第一個執行數據庫更新,然後最後一個讀取數據庫。
我的問題是數據庫會讀取更新數據庫的第一個方法調用中的更改(請注意,這些方法中存在提交,但在事務範圍完成之前它們並未真正提交)。
例如使用TransactionScope。方法1(將新註釋插入數據庫中)。
方法2(從數據庫中檢索所有評論)。
complete。
}
將方法2的結果包括方法1插入?
讓我感到困惑的是,我已經跑了大量的測試,有時更新在那裏,有時它不是!?!
我知道有隔離級別(在高層次),是否有一個只允許在transactionscope內讀取未提交的數據?
任何和所有幫助非常感謝......
是的,我明白你的意思並同意,我想插入第一個數據應該可用於在同一事務後面的步驟。我想我的困惑是爲什麼在我的一些測試中,第一次插入並不總是出現在事務後面的讀取中...... – user2026086
我不得不懷疑程序中的邏輯錯誤。如果您在事務中成功插入,則在提交或中止前後續讀取數據應始終返回數據。 – Haney
user2026086我認爲這可能是交易損失或總是使用其他連接來處理當前事務中的更改。它非常不重要的用戶Transaction.Connection所有需要連接到數據庫的操作,如執行命令。並確保您始終使用sqlcommand。Transaction = yourTransaction。我推測witout代碼,但我相信,你可以在開始接收插入值並在最後收到它,直到我不會回滾:)並記住dispose = rollback //否提交=回滾//什麼都沒有發生 - mssql auto rollback –