今天項目調試中發現,
------
dao.BeginTransaction();
insertDataNew;
using DataReader read newdata;
updatesomething;
deletesomething;
dao.Commit();
---------
在事務中,先插入一組新數據,然後用DataReader讀取新數據的對比結果,再做一些update,delete;
執行中發現一旦在事務中執行DataReader讀取新數據,上一步插入的數據就被回滾了,到時程序結果不正常,百思不得其解
研究後發現,是DataReader的讀取機制導致的,他在讀數據的時候會獨立佔用該鏈接,事務所在連接被佔,事務被迫中斷,才導致事務莫名回滾
在此,將DataReader改爲DataSet讀取就可以避免此問題了,DataSet讀取不佔用連接,更改後成型結果正常。
定位花了太多時間,ORL...