下面是我写的一段测试代码,功能大体可以描述出来了ExamTransaction baseExam = new ExamTransaction();
baseExam.BeginTransaction();
ExamTransaction et = new ExamTransaction();
String strSql = "";
strSql = "insert into system_role values(11,'11','11')";et.BeginTransaction();
et.ExecuteNonQuery(strSql);
et.CommitTransaction();
baseExam.RollbackTransaction();

解决方案 »

  1.   

    但B和C功能是可以单独调用的啊!
    如:
    模块1:
        功能B();模块2:
        功能C();模块3:
        功能A();所以功能B和C中都需要单独的事务控制有什么好的办法吗?
      

  2.   

    如果需要A事务那么B,C事务明显是多余的,嵌套事务表示把B,C的事务合并到A事务里,一个事务就可以处理完成。
      

  3.   

    晕,B、C事务并不总是被A事务调用的,是可以单独用的,还有没有高手啊,来帮一个,谢了
      

  4.   

    把a中不属于B,C的部分组合成D事务,B,C事务不变。笨了点
      

  5.   

    当然有办法了,但是不能直接使用.net中的事务处理方法,这里也没有办法说清楚,提供一下主要的思想.
    这个方法的主要限制是需要采用乐观锁,不能适应悲观锁的需要(要是需要的话,需要模拟EJB的做法,自己创容器,加锁).
    主要思想是在开始事务的时候假装开始事务,实际的程序只是开始记录每一个动作,当程序需要update,insert,delete的操作不直接操作数据库,而是操作内存并记录操作,要是query操作则直接操作数据库,并记录操作;提交事务的时候,就需要真的加锁,并执行操作,delete,updata,insert需要检验数据完整性,不符合的rollback.
    基本是这样的,细节应该比较复杂,要是真的需要,那需要时间去构建不少类库.
    要是没有什么特殊的需要可以避免.