如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化

解决

当你使用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();
            }


你可能感兴趣的:(asp.net)