DbProviderFactory factory = SqlClientFactory.Instance;
            DbConnection cn = factory.CreateConnection();
            cn.ConnectionString = "server=zjh\\zjhdata2005;user id=zjh;database=test;password=321321";
            if (cn.State == ConnectionState.Closed) cn.Open();
            DbCommand cmd = cn.CreateCommand();
            cmd.CommandText = "update lufei set formaddress='ux-px'"+" where prices=110";
            cmd.Connection = cn;
            DbTransaction tran = cn.BeginTransaction();
            cmd.ExecuteNonQuery();//错误如下
            tran.Commit();            //*如果分配给命令的连接位于本地挂起事务中,
            // * ExecuteNonQuery 要求命令拥有事务。
            // * 命令的 Transaction 属性尚未初始化。
            // * /

解决方案 »

  1.   

    if (cn.State == ConnectionState.Closed) cn.Open();
    DbTransaction tran = cn.BeginTransaction();
    DbCommand cmd = cn.CreateCommand();
    cmd.Transaction = tran; // 加上这句
    ...
      

  2.   

    //*如果分配给命令的连接位于本地挂起事务中,
                // * ExecuteNonQuery 要求命令拥有事务。
                // * 命令的 Transaction 属性尚未初始化。提示很明显,同意一楼
      

  3.   

     DbTransaction tran = cn.BeginTransaction();
                cmd.Transaction = tran;
                cmd.ExecuteNonQuery();
                try{
                tran.Commit();}
                catch(){}