有这样一个事务处理程序:1.Trans = sqlConncetion.BeginTransaction(IsolationLevel.RepeatableRead);2.scommand = new SqlCommand("select * from table where ID=" + ID, con);  ........3.Trans.Commit();这三行在一个方法里的时候,俩个事务并发,第一个事务可以锁住记录不让后来的事务读数据
直到提交但是把第三行放到另一个方法里去,第一个事务就锁不住记录了。这是为什么?

解决方案 »

  1.   

    第三行放到另一个方法里去,Trans 做了互斥(lock)了吗?
    不然会导致线程不安全,造成事务提交混乱!
      

  2.   

    知道原因了
    因为2和3之间的那些行中有修改命令
    比如:update table set xxx where id=ID
    如果修改命令和scommand = new SqlCommand("select * from table where ID=" + ID, con); 
    在一个方法之内能锁住行
    不在一个方法之内则锁不住。