public DropWorkspace(DatabaseObjectBase dbObject) : base(dbObject) { var sync = DatabaseObjectSynchronizationBase.GetSynchronization(dbObject); SynchronizationItems.AddRange(sync.GetDropItems()); }
private void populateDifferences(bool ignoreCase, bool condensed) { var syncItem = DatabaseObjectSynchronizationBase.GetSynchronization(TargetDatabase, SourceObject); SynchronizationItems.AddRange(syncItem.GetSynchronizationItems(TargetObject, ignoreCase, condensed)); if (SourceObject is DatabaseObjectWithExtendedProperties) { SynchronizationItems.AddRange(ExtendedPropertySynchronization.GetExtendedProperties(TargetDatabase, SourceObject as DatabaseObjectWithExtendedProperties, TargetObject as DatabaseObjectWithExtendedProperties)); } }
private void populateDifferences() { var syncItem = DatabaseObjectSynchronizationBase.GetSynchronization(SourceObject); SynchronizationItems.AddRange(syncItem.GetSynchronizationItems(TargetObject)); if (SourceObject is DatabaseObjectWithExtendedProperties) { SynchronizationItems.AddRange(ExtendedPropertySynchronization.GetExtendedProperties(SourceObject as DatabaseObjectWithExtendedProperties, TargetObject as DatabaseObjectWithExtendedProperties)); } }
private void recursivelyPopulateMissingDependencies(DatabaseObjectBase parent, List <WorkspaceBase> selectedWorkspaces, Dictionary <DatabaseObjectBase, List <DatabaseObjectBase> > missing, List <DatabaseObjectBase> checkedObjects, bool isForDrop) { if (checkedObjects.Contains(parent)) { return; } checkedObjects.Add(parent); var toObjects = ToDataSource.CurrentDatabase.GetDatabaseObjects(false).ConvertAll(s => (DatabaseObjectBase)s); toObjects.AddRange(from s in ToDataSource.CurrentDatabase.Schemas from t in s.Tables select t); foreach (var ws in selectedWorkspaces) { var sync = DatabaseObjectSynchronizationBase.GetSynchronization(parent.Database, parent); var missingDendencies = sync.GetMissingDependencies(toObjects, ws.SynchronizationItems.Where(si => !si.Omit).ToList(), isForDrop, IgnoreCase); foreach (var child in missingDendencies) { if (checkedObjects.Contains(child)) { continue; } if (child is ForeignKey fk && ws is TableWorkspace tw && (tw.RemoveAddKeys || selectedWorkspaces.Any(sw => sw is TableWorkspace tw2 && tw2.Select && tw2.SourceTable == fk.ParentTable))) { continue; } checkedObjects.Add(child); if (!missing.ContainsKey(parent)) { missing.Add(parent, new List <DatabaseObjectBase>()); } if (!missing[parent].Contains(child)) { missing[parent].Add(child); } recursivelyPopulateMissingDependencies(child, selectedWorkspaces, missing, checkedObjects, isForDrop); } } }
private void frmStructureDetails_Load(object sender, EventArgs e) { var sync = DatabaseObjectSynchronizationBase.GetSynchronization(Workspace.SourceObject); txtFromScript.Text = string.Join("\r\n\r\n", sync.GetRawCreateText()); if (Workspace.TargetObject == null) { txtToScript.Text = string.Empty; } else { sync = DatabaseObjectSynchronizationBase.GetSynchronization(Workspace.TargetObject); txtToScript.Text = sync.GetRawCreateText(); } splitMain.Panel2Collapsed = Workspace.TargetObject == null; }
private void recursivelyPopulateMissingDependencies(DatabaseObjectBase parent, List <WorkspaceBase> selectedWorkspaces, Dictionary <DatabaseObjectBase, List <DatabaseObjectBase> > missing, List <DatabaseObjectBase> checkedObjects, bool isForDrop) { if (checkedObjects.Contains(parent)) { return; } checkedObjects.Add(parent); var toObjects = ToDatabase.GetDatabaseObjects(false).ConvertAll(s => (DatabaseObjectBase)s); toObjects.AddRange(from s in ToDatabase.Schemas from t in s.Tables select t); var selectedItems = from ws in selectedWorkspaces from si in ws.SynchronizationItems where !si.Omit select si; var sync = DatabaseObjectSynchronizationBase.GetSynchronization(parent); var missingDendencies = sync.GetMissingDependencies(toObjects, selectedItems.ToList(), isForDrop); foreach (var child in missingDendencies) { if (checkedObjects.Contains(child)) { continue; } checkedObjects.Add(child); if (!missing.ContainsKey(parent)) { missing.Add(parent, new List <DatabaseObjectBase>()); } if (!missing[parent].Contains(child)) { missing[parent].Add(child); } recursivelyPopulateMissingDependencies(child, selectedWorkspaces, missing, checkedObjects, isForDrop); } }