使用三层架构,如何做事务处理。 需要完整的例子。谢谢各位。行的话一定给分 。我是刚出道的菜鸟。大家多帮帮忙 谢谢

解决方案 »

  1.   

    如果可以的话 能把代码发给我是最好的了  这是我的Email:[email protected]
      

  2.   

    如果只是数据库级别的事务,只要在SqlHelper或者数据访问层相关的地方,加入SqlTransaction代码。
      

  3.   

     数据处理层方法        /// <summary>
            /// 执行多条SQL语句,实现数据库事务。
            /// </summary>
            /// <param name="SQLStringList">多条SQL语句</param>
            public static int ExecuteSqlTran(List<String> SQLStringList)
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    SqlTransaction tx = conn.BeginTransaction();
                    cmd.Transaction = tx;
                    try
                    {
                        int count = 0;
                        for (int n = 0; n < SQLStringList.Count; n++)
                        {
                            string strsql = SQLStringList[n];
                            if (strsql.Trim().Length > 1)
                            {
                                cmd.CommandText = strsql;
                                count += cmd.ExecuteNonQuery();
                            }
                        }
                        tx.Commit();
                        return count;
                    }
                    catch
                    {
                        tx.Rollback();
                        return 0;
                    }
                }
            }
      

  4.   

    会用三层的这段代码应该很熟了事务一般是一个动作,应该在BLL层吧数据操作就应该在DAL层了个人理解我也正在学习三层
      

  5.   

    BLL层,用try{
    using(System.Transaction.TrasactionScop ts=new TransactionScrope())
    {
    第一个类中的.Add()方法(,调用该类对应的接口-->数据库实现层);第二个类中的.Remove()方法(,调用该类对应的接口-->数据库实现层)
    .....
    ts.Complete();
    return true;}
    }
    catch(Exception e)
    {
    Log(e);//or throw(e);
    }
      

  6.   

    回5楼的
    我帖的代码是在数据处理层实现多条SQL语句以事务的方式执行
    你所指的我明白,是指业务上面的事务,就像一次插入多条数据
    用我帖的代码来实现的话,就是在业务处理层把要操作数据库的多条sql语句组合起来
    然后调用数据处理层执行事务的方法这方法可能不是很好,本人更支持用6楼大哥的方法
      

  7.   

    public void DoSqlTransactioin(string[] sqls)
            {
                SqlCommand comm = conn.CreateCommand();
                SqlTransaction trans = conn.BeginTransaction();            comm.Transaction = trans;
                try
                {
                    conn.Open();
                    foreach (string sql in sqls)
                    {
                        comm.CommandText = sql;
                        comm.ExecuteNonQuery();
                    }
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                }
                finally
                {
                    conn.Close();
                }
            }