Пример #1
0
        public DropWorkspace(DatabaseObjectBase dbObject)
            : base(dbObject)
        {
            var sync = DatabaseObjectSynchronizationBase.GetSynchronization(dbObject);

            SynchronizationItems.AddRange(sync.GetDropItems());
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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));
            }
        }
Пример #4
0
        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);
                }
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
        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);
            }
        }