private bool synchronize(BackgroundWorker worker, List <WorkspaceBase> workspaces, List <TableWorkspace> dataSpaces, List <TableWorkspace> truncDelete) { var sync = new SynchronizationHelper(); sync.DisplayMessage += delegate(object sender, Common.PromptEventArgs e) { MessageBox.Show("Failed to synchronize: " + e.Message); }; return(sync.Synchronize(_compareHelper, workspaces, dataSpaces, truncDelete, worker)); }
private void btnGo_Click(object sender, EventArgs e) { var sb = getMissingDependencyString(); if (sb.Length > 0) { MessageBox.Show(sb.ToString(), "Dependencies"); return; } var dropSpaces = (gridDropObjects.DataSource as BindingList <DropWorkspace>) .Where(t => t.Select).ToList(); var structureSpaces = (gridTables.DataSource as BindingList <TableWorkspace>) .Where(t => t.Select).ToList(); var dataSpaces = (gridTables.DataSource as BindingList <TableWorkspace>) .Where(t => t.SelectTableForData).ToList(); var truncDelete = (gridTables.DataSource as BindingList <TableWorkspace>) .Where(t => t.Truncate || t.Delete).ToList(); var objSpaces = gridObjects.DataSource == null ? new List <ObjectWorkspace>() : (gridObjects.DataSource as BindingList <ObjectWorkspace>) .Where(p => p.Select).ToList(); var changes = dropSpaces.Select(t => t.TargetObject.Description + " - Drop").Union( structureSpaces.Where(t => t.TargetObject != null).Select(t => t.TargetObject + " - Alter") ).Union( structureSpaces.Where(t => t.TargetObject == null).Select(t => t.SourceObject + " - Create") ).Union( dataSpaces.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Data") ).Union( truncDelete.Select(t => (t.TargetObject == null ? t.SourceObject : t.TargetObject) + " - Truncate/Delete") ).Union( objSpaces.Select(t => t.SourceObject + " - " + t.SourceObject.ObjectType) ).ToList(); if (changes.Count() > 15) { changes = changes.Take(15).ToList(); changes.Add("..."); } if (MessageBox.Show(string.Format("{0} - {1} will be changed:\r\n\r\n{2}\r\n\r\nContinue?", _compareHelper.ToDatabase.DataSource, _compareHelper.ToDatabase.DatabaseName, string.Join("\r\n", changes.ToArray())), "Proceed", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } if (!dropSpaces.Any() && !structureSpaces.Any() && !dataSpaces.Any() && !objSpaces.Any() && !truncDelete.Any()) { MessageBox.Show("Nothing to synchronize."); return; } List <WorkspaceBase> workspaces = new List <WorkspaceBase>(); if (structureSpaces.Any()) { workspaces.AddRange(structureSpaces); } if (objSpaces.Any()) { workspaces.AddRange(objSpaces); } if (dropSpaces.Any()) { workspaces.AddRange(dropSpaces); } bool success = false; var worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = true; worker.DoWork += delegate(object sender2, DoWorkEventArgs e2) { success = SynchronizationHelper.Synchronize(_compareHelper, workspaces, dataSpaces, truncDelete, worker); }; PaJaMa.WinControls.WinProgressBox.ShowProgress(worker, allowCancel: true, progressBarStyle: ProgressBarStyle.Marquee); if (success) { MessageBox.Show("Done"); refreshPage(true); } }
public static bool ProcessArguments(string[] args) { try { bool somethingProcessed = true; for (int i = 0; i < args.Length - 1; i++) { var arg = args[i]; if (arg == "-c") { var fileName = args[i + 1]; var compareWorkspace = PaJaMa.Common.XmlSerialize.DeserializeObjectFromFile <CompareWorkspace>(fileName); var selectedWorkspaces = compareWorkspace.SelectedTableWorkspaces.Where(ws => ws.SelectTableForData) .ToList(); if (selectedWorkspaces.Any()) { var compareHelper = new CompareHelper(compareWorkspace.FromConnectionString, compareWorkspace.ToConnectionString, null); List <TableWorkspace> workspaces = new List <TableWorkspace>(); foreach (var ws in selectedWorkspaces) { var fromTbl = from s in compareHelper.FromDatabase.Schemas from t in s.Tables where t.ToString() == ws.SourceSchemaTableName select t; var toTbl = from s in compareHelper.ToDatabase.Schemas from t in s.Tables where t.ToString() == ws.TargetSchemaTableName select t; workspaces.Add(new TableWorkspace(compareHelper, fromTbl.First(), toTbl.First()) { SelectTableForData = ws.SelectTableForData, KeepIdentity = ws.KeepIdentity, RemoveAddIndexes = ws.RemoveAddIndexes, RemoveAddKeys = ws.RemoveAddKeys, Truncate = ws.Truncate }); } //using (var conn = new SqlConnection(compareWorkspace.ToConnectionString)) //{ // conn.Open(); // using (var trans = conn.BeginTransaction()) // { // try // { // new TransferHelper(new BackgroundWorker() { WorkerReportsProgress = true }).Transfer(workspaces, trans, compareWorkspace.FromConnectionString); //compareHelper.Synchronize(new BackgroundWorker() { WorkerReportsProgress = true }, workspaces // .Select(ws => (WorkspaceBase)ws).ToList(), trans); SynchronizationHelper.Synchronize(compareHelper, new List <WorkspaceBase>(), workspaces, workspaces.Where(ws => ws.Truncate).ToList(), new BackgroundWorker() { WorkerReportsProgress = true }); // trans.Commit(); // } // catch // { // trans.Rollback(); // throw; // } // } // conn.Close(); // SqlConnection.ClearAllPools(); //} } somethingProcessed = true; i++; } } return(somethingProcessed); } catch { // TODO: log? return(false); } }