Example #1
0
        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);
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        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);
        }
Example #4
0
 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);
             }
         }
     }
 }
Example #5
0
        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);
        }