示例#1
0
        private async Task <bool> IsNameExisted()
        {
            DatabaseType databaseType = this.rbAnotherDatabase.Checked ? this.ucConnection.DatabaseType : this.DatabaseType;

            ConnectionInfo connectionInfo = this.rbAnotherDatabase.Checked ? this.targetDbConnectionInfo : this.ConnectionInfo;

            DbInterpreterOption option = new DbInterpreterOption()
            {
                ObjectFetchMode = DatabaseObjectFetchMode.Simple
            };

            DbInterpreter dbInterpreter = DbInterpreterHelper.GetDbInterpreter(databaseType, connectionInfo, option);

            SchemaInfoFilter filter = new SchemaInfoFilter()
            {
                TableNames = new string[] { this.txtName.Text.Trim() }
            };

            var tables = await dbInterpreter.GetTablesAsync(filter);

            if (tables.Count > 0)
            {
                return(true);
            }

            return(false);
        }
示例#2
0
        private async void LoadSourceDbSchemaInfo()
        {
            this.tvSource.Nodes.Clear();

            DatabaseType        dbType = this.GetDatabaseType(this.cboSourceDB.Text);
            DbInterpreterOption option = new DbInterpreterOption()
            {
                ObjectFetchMode = DatabaseObjectFetchMode.Simple
            };
            DbInterpreter dbInterpreter = DbInterpreterHelper.GetDbInterpreter(dbType, this.sourceDbConnectionInfo, option);

            if (dbInterpreter is SqlServerInterpreter)
            {
                List <UserDefinedType> userDefinedTypes = await dbInterpreter.GetUserDefinedTypesAsync();

                if (userDefinedTypes.Count > 0)
                {
                    TreeNode userDefinedRootNode = new TreeNode("User Defined Types");
                    userDefinedRootNode.Name = nameof(UserDefinedType);
                    this.tvSource.Nodes.Add(userDefinedRootNode);

                    foreach (UserDefinedType userDefinedType in userDefinedTypes)
                    {
                        TreeNode node = new TreeNode();
                        node.Tag  = userDefinedType;
                        node.Text = $"{userDefinedType.Owner}.{userDefinedType.Name}";
                        userDefinedRootNode.Nodes.Add(node);
                    }
                }
            }

            TreeNode tableRootNode = new TreeNode("Tables");

            tableRootNode.Name = nameof(Table);
            this.tvSource.Nodes.Add(tableRootNode);

            List <Table> tables = await dbInterpreter.GetTablesAsync();

            foreach (Table table in tables)
            {
                TreeNode tableNode = new TreeNode();
                tableNode.Tag  = table;
                tableNode.Text = dbInterpreter.GetObjectDisplayName(table, false);
                tableRootNode.Nodes.Add(tableNode);
            }

            TreeNode viewRootNode = new TreeNode("Views");

            viewRootNode.Name = nameof(DatabaseInterpreter.Model.View);
            this.tvSource.Nodes.Add(viewRootNode);

            List <DatabaseInterpreter.Model.View> views = ViewHelper.ResortViews(await dbInterpreter.GetViewsAsync());

            foreach (var view in views)
            {
                TreeNode viewNode = new TreeNode();
                viewNode.Tag  = view;
                viewNode.Text = dbInterpreter.GetObjectDisplayName(view, false);
                viewRootNode.Nodes.Add(viewNode);
            }
        }
        private async void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            TabPage tabPage = this.tabControl1.SelectedTab;

            if (tabPage == null)
            {
                return;
            }

            Table table = new Table()
            {
                Owner = this.cboOwner.Text, Name = this.txtTableName.Text.Trim()
            };

            DbInterpreter dbInterpreter = this.GetDbInterpreter();

            if (tabPage.Name == this.tabIndexes.Name)
            {
                tabPage.Tag = 1;

                this.ucIndexes.Table = table;

                if (!this.ucIndexes.Inited)
                {
                    this.ucIndexes.InitControls(dbInterpreter);
                }

                if (!this.displayInfo.IsNew)
                {
                    if (!this.ucIndexes.LoadedData)
                    {
                        SchemaInfoFilter filter = new SchemaInfoFilter();
                        filter.TableNames = new string[] { this.displayInfo.Name };

                        List <TableIndex> tableIndexes = await dbInterpreter.GetTableIndexesAsync(filter, true);

                        this.ucIndexes.LoadIndexes(IndexManager.GetIndexDesignerInfos(this.displayInfo.DatabaseType, tableIndexes));
                    }
                }

                IEnumerable <TableColumnDesingerInfo> columns = this.ucColumns.GetColumns().Where(item => !string.IsNullOrEmpty(item.Name) && item.IsPrimary);

                this.ucIndexes.LoadPrimaryKeys(columns);
            }
            else if (tabPage.Name == this.tabForeignKeys.Name)
            {
                tabPage.Tag = 1;

                this.ucForeignKeys.Table = table;

                if (!this.ucForeignKeys.Inited)
                {
                    dbInterpreter.Option.ObjectFetchMode = DatabaseObjectFetchMode.Simple;

                    List <Table> tables = await dbInterpreter.GetTablesAsync();

                    if (this.displayInfo.IsNew)
                    {
                        tables.Add(new Table()
                        {
                            Name = "<self>"
                        });
                    }

                    this.ucForeignKeys.InitControls(tables);
                }

                if (!this.displayInfo.IsNew)
                {
                    if (!this.ucForeignKeys.LoadedData)
                    {
                        SchemaInfoFilter filter = new SchemaInfoFilter();
                        filter.TableNames = new string[] { this.displayInfo.Name };

                        dbInterpreter.Option.ObjectFetchMode = DatabaseObjectFetchMode.Details;

                        List <TableForeignKey> foreignKeys = await dbInterpreter.GetTableForeignKeysAsync(filter);

                        this.ucForeignKeys.LoadForeignKeys(IndexManager.GetForeignKeyDesignerInfos(foreignKeys));
                    }
                }
            }
            else if (tabPage.Name == this.tabConstraints.Name)
            {
                tabPage.Tag = 1;

                if (!this.ucConstraints.Inited)
                {
                    this.ucConstraints.InitControls();
                }

                if (!this.displayInfo.IsNew)
                {
                    if (!this.ucConstraints.LoadedData)
                    {
                        SchemaInfoFilter filter = new SchemaInfoFilter();
                        filter.TableNames = new string[] { this.displayInfo.Name };

                        List <TableConstraint> constraints = await dbInterpreter.GetTableConstraintsAsync(filter);

                        this.ucConstraints.LoadConstraints(IndexManager.GetConstraintDesignerInfos(constraints));
                    }
                }
            }
        }