public async Task ExportTable(ExportProgressArgs ea) { try { DBETable table = ea.Table; if ((mode & ExportMode.Patch) != ExportMode.Patch) { table.SourceTable.Clear(); table.TargetTable.Clear(); } using (var transacton = new DBTransaction(table.SourceTable.Connection)) { ea.Current = 0; ea.Count = table.SourceTable.GetRowCount(transacton, table.Query); ea.Description = null; OnExportProgress(ea); using (transacton.Reader = transacton.ExecuteQuery(table.SourceTable.CreateQuery(table.Query, null), DBExecuteType.Reader) as IDataReader) { table.SourceTable.CheckColumns(transacton); while (transacton.Reader.Read()) { if (ea.Cancel) { transacton.Cancel(); return; } var row = table.SourceTable.LoadItemFromReader(transacton); var newRow = ExportRow(table, row); await table.TargetTable.SaveItem(newRow, null); ea.Current++; ea.Row = newRow; OnExportProgress(ea); if ((mode & ExportMode.Patch) != ExportMode.Patch) { table.SourceTable.Clear(); table.TargetTable.Clear(); } } transacton.Reader.Close(); } transacton.Commit(); } } catch (Exception ex) { ea.Exception = ex; OnExportProgress(ea); } }
public DBItem ExportRow(DBETable table, DBItem row) { DBItem newRow = null; if (table.TargetTable.PrimaryKey != null && table.SourceTable.PrimaryKey != null) { newRow = table.TargetTable.LoadItemById(row.PrimaryId, DBLoadParam.None); } if (newRow == null) { newRow = table.TargetTable.NewItem(DBUpdateState.Insert, false); } foreach (var column in table.Columns) { if (!column.Check || column.UserDefined || column.TargetColumn == null || column.SourceColumn == null) { continue; } if ((mode & ExportMode.ExcludeAccess) == ExportMode.ExcludeAccess && (mode & ExportMode.Patch) == ExportMode.Patch && (column.TargetColumn.Keys & DBColumnKeys.Access) == DBColumnKeys.Access && newRow.Attached) { continue; } object val = row[column.SourceColumn]; if ((mode & ExportMode.DateValidation) == ExportMode.DateValidation && val is DateTime && ((DateTime)val).Year < 1900) { val = null; } if ((mode & ExportMode.StringTrimm) == ExportMode.StringTrimm && val is string) { val = ((string)val).Trim(); } newRow[column.TargetColumn] = val; } return(newRow); }
public DBTable GenerateTable(DBETable extable) { var newTable = extable.TargetTable; if (newTable == null) { newTable = new DBTable <DBItem>(extable.Target) { Schema = Target } } ; foreach (var column in extable.Columns) { if (column.Check && !newTable.Columns.Contains(column.Target)) { newTable.Columns.Add(GenerateColumn(column)); } } return(newTable); }
public DBEColumnList(DBETable table) { Table = table; }
public void Initialize(ExportProgressArgs ea, IEnumerable <DBTable> list = null) { try { if (Source == null) { throw new Exception("Source Schema not specified!"); } if (ea != null) { ea.Type = ExportProgressType.Initialize; ea.Description = "Process start!"; ea.Count = Source.Tables.Count; ea.Current = 0; OnExportProgress(ea); } if (list == null) { list = Source.Tables; } Tables.Clear(); foreach (var table in list) { if (ea.Cancel) { return; } var esetting = new DBETable(table.Name) { Target = prefix + table.Name.Trim().Replace("_", "") }; Tables.Add(esetting); foreach (var column in table.Columns) { esetting.Columns.Add(new DBEColumn(column.Name) { Target = column.Name.Trim().Replace(" ", "_"), DataType = column.DBDataType, Order = column.Order, Size = column.Size, Scale = column.Scale }); } if (ea != null) { ea.Current++; ea.Table = esetting; ea.Description = $"Table:{esetting} ({esetting.Columns.Count} columns)"; } } PatchQuery(); } catch (Exception ex) { ea.Description = ex.Message; ea.Exception = ex; OnExportProgress(ea); } }
public int CompareTo(object obj) { DBETable ts = obj as DBETable; return(string.Compare(this.source, ts.Source)); }