Ejemplo n.º 1
0
        public void Save <T>(DataTable tb, string delete_id, string key_id, string where_key_id,
                             string no_insert_key, string no_update_key)
        {
            string tbname = "t" + "_" + Guid.NewGuid().ToString().Replace("-", "");//表名
            var    db     = new DB.DBByHandClose(connection_string);
            IDB    d      = db;

            try
            {
                db.Open();
                db.BeginTran();

                tb.TableName = tbname;

                //创建临时表
                string sql = ReflectionHelper.GetCreateTableSQL <T>().Replace("??", tbname);

                IDB d1 = new DBByAutoClose(connection_string);
                d1.ExecuteScalar(sql, null);

                db.BulkCopy(tb);//复制数据

                sql = ReflectionHelper.GetInsertSQL <T>(key_id, where_key_id, no_insert_key).Replace("??", tbname);
                d.ExecuteScalar(sql, null);

                sql = ReflectionHelper.GetUpdateSQL <T>(key_id, where_key_id, no_update_key).Replace("??", tbname);
                d.ExecuteScalar(sql, null);

                sql = ReflectionHelper.GetDeleteSQL <T>(delete_id, key_id, where_key_id).Replace("??", tbname);
                d.ExecuteScalar(sql, null);


                db.CommitTran();
            }
            catch (Exception ex)
            {
                db.RollBackTran();
                throw;
            }
            finally
            {
                string sql = "drop table " + tbname;
                d.ExecuteScalar(sql, null);
                db.Close();
            }
        }