示例#1
0
        private async Task <bool> CreateSchema()
        {
            DatabaseParameters param = null;

            if (string.IsNullOrEmpty(_connectionString))
            {
                if (_configWizard.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    param = _configWizard.Parameters;
                    if (param == null)
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }

            treeView1.Enabled = false;
            _db = DatabaseFactory
                  .Init(param.ConnectionString)
                  .ExcludeDefaultSchema()
                  .UseDatabaseFilter(new DatabaseFilter());

            _db.IsSchemaFile = false;

            foreach (var user in param.SelectedUsers)
            {
                _db.AddSchema(user);
            }

            if (param.DropObjects)
            {
                _db.IncludeDropStatement();
            }

            if (param.CreateUser)
            {
                _db.CreateUserScript();
            }

            if (param.SeparateSchemas)
            {
                _db.SeparateScriptFilePerSchema();
            }

            if (param.AutoChangeSchema)
            {
                _db.UseSchemaChangeScript();
            }

            _db.OnSchemaProcess += _db_OnSchemaProcess;

            bool result = await _db.BuildAsync();

            FillSchema();
            treeView1.Enabled      = true;
            statusBar.Text         = "";
            tsCompare.Enabled      = true;
            tsDatabaseInfo.Enabled = true;
            tsSaveSchema.Enabled   = true;
            tsCreateScript.Enabled = true;

            return(result);
        }