private void SqlUpdateIds(IEnumerable <TInput> rowsToUpdate) { if (rowsToUpdate == null || rowsToUpdate?.Count() == 0) { return; } TableDefinition updateDefinition = new TableDefinition(); if (DestinationTableDefinition == null) { DestinationTableDefinition = TableDefinition.FromTableName(this.DbConnectionManager, TableName); } IdColumnNames.ForEach(idcol => updateDefinition.Columns.Add(DestinationTableDefinition.Columns.Where(col => col.Name == idcol).FirstOrDefault())); UpdateColumnNames.ForEach(compcol => updateDefinition.Columns.Add(DestinationTableDefinition.Columns.Where(col => col.Name == compcol).FirstOrDefault())); TableData data = new TableData(updateDefinition); foreach (var row in rowsToUpdate) { List <object> updateData = new List <object>(); updateData.AddRange(GetIdColumnValues(row)); updateData.AddRange(GetUpdateColumnValues(row)); data.Rows.Add(updateData.ToArray()); } SqlTask.BulkUpdate(this.ConnectionManager, data, TableName, UpdateColumnNames, IdColumnNames); }
private void AddMergeIdColumnNameAttribute(PropertyInfo propInfo) { var attr = propInfo.GetCustomAttribute(typeof(IdColumn)) as IdColumn; if (attr != null) { var cmattr = propInfo.GetCustomAttribute(typeof(ColumnMap)) as ColumnMap; if (cmattr != null) { IdColumnNames.Add(cmattr.ColumnName); } else { IdColumnNames.Add(propInfo.Name); } } }
private string CreateConcatSqlForNames() { string result = $"CONCAT( {string.Join(",", IdColumnNames.Select(cn => $"{QB}{cn}{QE}, '|'"))} )"; if (this.ConnectionType == ConnectionManagerType.MySql) { result = $"CONCAT_WS('', {string.Join(",", IdColumnNames.Select(cn => $"{QB}{cn}{QE}, '|'"))} )"; } else if (this.ConnectionType == ConnectionManagerType.Oracle) { result = $" {string.Join("||", IdColumnNames.Select(cn => $"{QB}{cn}{QE} || '|' "))} "; } else if (this.ConnectionType == ConnectionManagerType.SQLite) { result = $" {string.Join("||", IdColumnNames.Select(cn => $"COALESCE({QB}{cn}{QE},'') || '|' "))} "; } return(result); }
private void AddMergeIdColumnNameAttribute(PropertyInfo propInfo) { if (MergeProps.IdPropertyNames.Any(idcol => idcol.IdPropertyName == propInfo.Name)) { IdColumnNames.Add(propInfo.Name); } else { var attr = propInfo.GetCustomAttribute(typeof(IdColumn)) as IdColumn; if (attr != null) { var cmattr = propInfo.GetCustomAttribute(typeof(ColumnMap)) as ColumnMap; if (cmattr != null) { IdColumnNames.Add(cmattr.NewName); } else { IdColumnNames.Add(propInfo.Name); } } } }
private void SqlDeleteIds(IEnumerable <TInput> rowsToDelete) { if (rowsToDelete == null || rowsToDelete?.Count() == 0) { return; } TableDefinition idColsOnly = new TableDefinition(); if (DestinationTableDefinition == null) { DestinationTableDefinition = TableDefinition.FromTableName(this.DbConnectionManager, TableName); } IdColumnNames.ForEach(idcol => idColsOnly.Columns.Add(DestinationTableDefinition.Columns.Where(col => col.Name == idcol).FirstOrDefault())); idColsOnly.Name = TableName; TableData data = new TableData(idColsOnly); foreach (var row in rowsToDelete) { data.Rows.Add(GetIdColumnValues(row).ToArray()); } SqlTask.BulkDelete(this.ConnectionManager, data, TableName); }