コマンドに割り当てられた接続がローカル保留中のトランザクションにある場合、ExecuteNonQueryはコマンドにトランザクションの所有を要求します.コマンドのTransactionプロパティはまだ初期化されていません

1360 ワード

  

    conn.BeginTransaction()     ,        conn    Command        ,              


  :

            DbConnection dbc = database.CreateConnection();
            DbTransaction dbtt = null;
            try
            {
                dbc.Open();
                dbtt = dbc.BeginTransaction();
                DbCommand storedProcCommand = this.database.GetStoredProcCommand("sp_cc_Category_Create");

                storedProcCommand.Connection = dbc;//   command dbc   ,           dbc      dbtt
                storedProcCommand.Transaction = dbtt;//           
                storedProcCommand.ExecuteNonQuery();  //          

                //        command         ,        ,      

       DbCommand storedProcCommandnew = this.database.GetStoredProcCommand("sp_cc_Category_update");

      storedProcCommandnew .Connection = dbc;//  
      storedProcCommandnew .Transaction = dbtt;//  

    //storedProcCommand .ExecuteNonQuery();  //        commond       
      storedProcCommandnew .ExecuteNonQuery();  //               ,

     



          

                dbtt.Commit();

            }
            catch
            {
                dbtt.Rollback();
            }
            finally
            {
                if (dbc.State == ConnectionState.Open)
                    dbc.Close();
            }