//------------------------------------------------------------------ // Insert command //------------------------------------------------------------------ private MySqlCommand BuildInsertCommand() { MySqlCommand sqlCommand = new MySqlCommand(); StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilderArguments = new StringBuilder(); StringBuilder stringBuilderParameters = new StringBuilder(); this.AddColumnParametersToCommand(sqlCommand); stringBuilder.Append(string.Concat("IF ((SELECT COUNT(*) FROM ", trackingName.FullQuotedString, " WHERE ")); stringBuilder.Append(MySqlManagementUtils.ColumnsAndParameters(this.tableDescription.PrimaryKey.Columns, string.Empty)); stringBuilder.AppendLine(") <= 0) THEN"); string empty = string.Empty; foreach (var mutableColumn in this.tableDescription.Columns.Where(c => !c.IsReadOnly)) { ObjectNameParser columnName = new ObjectNameParser(mutableColumn.ColumnName, "`", "`"); stringBuilderArguments.Append(string.Concat(empty, columnName.FullQuotedString)); stringBuilderParameters.Append(string.Concat(empty, $"{MYSQL_PREFIX_PARAMETER}{columnName.FullUnquotedString}")); empty = ", "; } stringBuilder.AppendLine($"\tINSERT INTO {tableName.FullQuotedString}"); stringBuilder.AppendLine($"\t({stringBuilderArguments.ToString()})"); stringBuilder.AppendLine($"\tVALUES ({stringBuilderParameters.ToString()});"); stringBuilder.AppendLine(); stringBuilder.AppendLine("END IF;"); sqlCommand.CommandText = stringBuilder.ToString(); return(sqlCommand); }
//------------------------------------------------------------------ // Delete Metadata command //------------------------------------------------------------------ private MySqlCommand BuildDeleteMetadataCommand() { MySqlCommand sqlCommand = new MySqlCommand(); this.AddPkColumnParametersToCommand(sqlCommand); MySqlParameter sqlParameter = new MySqlParameter(); sqlParameter.ParameterName = "sync_check_concurrency"; sqlParameter.MySqlDbType = MySqlDbType.Int32; sqlCommand.Parameters.Add(sqlParameter); MySqlParameter sqlParameter1 = new MySqlParameter(); sqlParameter1.ParameterName = "sync_row_timestamp"; sqlParameter1.MySqlDbType = MySqlDbType.Int64; sqlCommand.Parameters.Add(sqlParameter1); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine(); stringBuilder.AppendLine($"DELETE FROM {trackingName.FullQuotedString} "); stringBuilder.Append($"WHERE "); stringBuilder.AppendLine(MySqlManagementUtils.ColumnsAndParameters(this.tableDescription.PrimaryKey.Columns, "")); stringBuilder.Append(";"); sqlCommand.CommandText = stringBuilder.ToString(); return(sqlCommand); }