DataReader的使用導致事務回滾

今天項目調試中發現,

------

 dao.BeginTransaction();

insertDataNew;

using DataReader read newdata;

updatesomething;

deletesomething;

dao.Commit();

---------

在事務中,先插入一組新數據,然後用DataReader讀取新數據的對比結果,再做一些update,delete;


執行中發現一旦在事務中執行DataReader讀取新數據,上一步插入的數據就被回滾了,到時程序結果不正常,百思不得其解


研究後發現,是DataReader的讀取機制導致的,他在讀數據的時候會獨立佔用該鏈接,事務所在連接被佔,事務被迫中斷,才導致事務莫名回滾

在此,將DataReader改爲DataSet讀取就可以避免此問題了,DataSet讀取不佔用連接,更改後成型結果正常。


定位花了太多時間,ORL...



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章