今天项目调试中发现,
------
dao.BeginTransaction();
insertDataNew;
using DataReader read newdata;
updatesomething;
deletesomething;
dao.Commit();
---------
在事务中,先插入一组新数据,然后用DataReader读取新数据的对比结果,再做一些update,delete;
执行中发现一旦在事务中执行DataReader读取新数据,上一步插入的数据就被回滚了,到时程序结果不正常,百思不得其解
研究后发现,是DataReader的读取机制导致的,他在读数据的时候会独立占用该链接,事务所在连接被占,事务被迫中断,才导致事务莫名回滚
在此,将DataReader改为DataSet读取就可以避免此问题了,DataSet读取不占用连接,更改后成型结果正常。
定位花了太多时间,ORL...