如果分配给命令的连接位于本地挂起事务中,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();
            }


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值