Beispiel #1
0
        public async void Export(ExportProgressArgs ea)
        {
            ExportSchema(ea);
            ea.Type        = ExportProgressType.Data;
            ea.Table       = null;
            ea.Count       = 0;
            ea.Current     = 0;
            ea.Description = "Export Data Started!";
            OnExportProgress(ea);

            foreach (DBETable table in Tables)
            {
                if (ea.Cancel)
                {
                    return;
                }
                if (!table.Check)
                {
                    continue;
                }
                ea.Table = table;
                await ExportTable(ea);

                ea.Description = string.Format("Export {0} rows of {1}!", ea.Count, table.Source);
                OnExportProgress(ea);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
 public void ExportSchema(ExportProgressArgs arg)
 {
     try
     {
         CheckParam();
         arg.Type        = ExportProgressType.Schema;
         arg.Count       = Tables.Count;
         arg.Current     = 0;
         arg.Table       = null;
         arg.Description = "Export Schema Started!";
         OnExportProgress(arg);
         foreach (DBETable table in Tables)
         {
             if (arg.Cancel)
             {
                 return;
             }
             arg.Description = null;
             arg.Current++;
             arg.Table = table;
             OnExportProgress(arg);
             if (!table.Check)
             {
                 continue;
             }
             DBTable newTable = GenerateTable(table);
             if (!Target.Tables.Contains(newTable))
             {
                 string ddl = newTable.FormatSql(DDLType.Create);
                 newTable.Schema.Connection.ExecuteQuery(ddl);
                 Target.Tables.Add(newTable);
             }
         }
         arg.Description = "Export Schema Complete!";
         OnExportProgress(arg);
     }
     catch (Exception ex)
     {
         arg.Exception = ex;
         OnExportProgress(arg);
     }
 }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 protected void OnExportProgress(ExportProgressArgs ea)
 {
     ExportProgress?.Invoke(this, ea);
 }