相关疑难解决方法(0)

环境事务中的TransactionScope错误不会回滚事务

我使用这样的环境事务:


using(TransactionScope tran = new TransactionScope()) {
    CallAMethod1();//INSERT
    CallAMethod2();//INSERT
    tran.Complete();
}
Run Code Online (Sandbox Code Playgroud)

该方法CallAMethod2();返回affected rows =-264 所以它无法插入但是第一个Insert已经提交了!

我想知道如何使用ambient transaction以及如果第二种方法有多个需要内部事务的操作,如果我将这些操作放在内部事务中该怎么办?像这样 :

     DAL_Helper.Begin_Transaction();

              //------Fill newKeysDictioanry

                affectedRow = DBUtilities.InsertEntityWithTrans("table2", newKeysDictioanry, DAL_Helper);

                if (affectedRow == 1)
                {
                    if (!string.IsNullOrEmpty(sp_confirm))
                    {
                        result_dt = UserTransactionDAL.Run_PostConfirm_SP(sp_PostConfirm, OBJ.ValuesKey, DAL_Helper);
                        if (result_dt.Rows.Count > 0 && result_dt.Rows[0][0].ToString() == "0")
                        {
                            DAL_Helper.current_trans.Commit();

                            if (DAL_Helper.connectionState == ConnectionState.Open)
                            {
                                DAL_Helper.Close_Connection();
                            }
                            return 1;// affectedRow;
                        }
                        else
                        {
                            DAL_Helper.current_trans.Rollback();
                            if (DAL_Helper.connectionState == ConnectionState.Open)
                            {
                                DAL_Helper.Close_Connection();
                            }
                            return -2; 
                        }
                    }
//etc
Run Code Online (Sandbox Code Playgroud)

c# asp.net informix transactions transactionscope

1
推荐指数
1
解决办法
5695
查看次数

标签 统计

asp.net ×1

c# ×1

informix ×1

transactions ×1

transactionscope ×1