ruder

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
        public static void DeleteS(T obj)
        {
            try
            {
                Delete(obj);
            }
            catch
            {
                MakeSureExistTableAndColumns();
                Delete(obj);
            }

        }

        public static void Delete(T obj)
        {
            using (SqlConnection conn = SqlHelper.GetSqlConnection())
            {
                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    Delete(obj, trans);
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw ex;
                }
            }

        }

     public static void Delete(T obj, SqlTransaction trans)
        {
            List<SqlParameter> parms = new List<SqlParameter>();
            string deleteSql = " DELETE FROM [dbo].["+CurrentType.Name+"]  WHERE ";
            bool isFirst=true;
            foreach (PropertyInfo info in Attributes)
            {
                foreach (object customAttribute in info.GetCustomAttributes(true))
                {
                    if (customAttribute is IDAttribute)
                    {
                        SqlParameter sqlParm=new SqlParameter("@"+info.Name,GetDbType(info));
                        sqlParm.Value = GetValueByType(info, obj); //info.GetValue(obj, null);
                        parms.Add(sqlParm);
                        if (isFirst) { isFirst = false; } else { deleteSql+=" AND "; }
                        deleteSql += info.Name + "=@" + info.Name;
                    }
                }
            }
            SqlHelper.ExecuteNonQuery(trans, CommandType.Text, deleteSql, parms.ToArray());
        }

posted on 2009-04-29 17:48  徐境  阅读(136)  评论(0)    收藏  举报