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(); } }