using (SqlTransaction transaction = connect.BeginTransaction())
            {
                try
                {
                    SqlParameter[] parms = new SqlParameter[2];                    parms[0] = new SqlParameter("@id", SqlDbType.BigInt);
                    parms[0].Value = id;
                    parms[1] = new SqlParameter("@name", SqlDbType.VarChar, 200);
                    parms[1].Value = name;
                    object num = SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "UpdateRole", parms);
                    for (int i = 0; i < PermissionIDs.Length; i++)
                    {
                        //这里我想放入一个事务中,是否可行
//SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "", parms);
                    }
                    //在这里提交事务
                }
                catch
                {
                    return false;
                }

解决方案 »

  1.   

              using (SqlTransaction transaction = connect.BeginTransaction())
                {
                    try
                    {
                        SqlParameter[] parms = new SqlParameter[2];                    parms[0] = new SqlParameter("@id", SqlDbType.BigInt);
                        parms[0].Value = id;
                        parms[1] = new SqlParameter("@name", SqlDbType.VarChar, 200);
                        parms[1].Value = name;
                        object num = SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "UpdateRole", parms);
                        for (int i = 0; i < PermissionIDs.Length; i++)
                        {
                            //这里我想放入一个事务中,是否可行可行
    //SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "", parms);
                        }
                        //在这里提交事务Commite可行
                    }
                    catch
                    {
                        //这里要回归(rollback)
                        return false;
                    }
      

  2.   

    可行,成功不会报错。结贴
     try
            {
                SqlConnection connect=GetConnection(connectionString);
                using (SqlTransaction transaction = connect.BeginTransaction())
                {
                    try
                    {
                        SqlParameter[] parms = new SqlParameter[2];                    parms[0] = new SqlParameter("@id", SqlDbType.BigInt);
                        parms[0].Value = id;
                        parms[1] = new SqlParameter("@name", SqlDbType.VarChar, 200);
                        parms[1].Value = name;
                        object num = SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "UpdateRole", parms);
                        for (int i = 0; i < PermissionIDs.Length; i++)
                        {
                            SqlParameter[] parms1 = new SqlParameter[2];                        parms1[0] = new SqlParameter("@id", SqlDbType.BigInt);
                            parms1[0].Value = id;
                            parms1[1] = new SqlParameter("@pid", SqlDbType.BigInt);
                            parms1[1].Value = PermissionIDs[i];
                            SqlHelper.SqlHelper.ExecuteNonQuery(transaction, CommandType.StoredProcedure, "InsertRole_Permission", parms1);
                        }
                        transaction.Commit();
                    }
                    catch
                    {
                        transaction.Rollback();
                        return false;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                GetConnection(connectionString).Close();
            }
            return true;