纠结了好几天,今天问题终于解决了。
初试TransactionScope实现页面级事务,大概类似下面的代码
using (TransactionScope ts = new TransactionScope())
{
try{
Work work = Work_Dao.get(id);
if(....){...}
else(...){...}
Work_Dao.Update(work);
worklog.dealtime = DateTime.now;
WorkLog_Dao.Update(worklog);
//其他update、insert操作
....
....
ts.complete();
}
catch(Exception ex)
{throw ex;}
finally{ts.Dispose();}
}
上述代码调试时提示错误“已中止事务。”,“该操作对登记的当前状态无效。”等好几个错误。但是如果这里不用事务就可以正常使用,但是为了保证数据的完整性还是得硬着头皮去用。查遍google页面得到错误原因。
最后看了看事务事务里面用select时可能会导致死锁,于是尝试性的把“Work work = Work_Dao.get(id);”放到事务外面,大功告成!