示例#1
0
        private string GetScriptForAll(bool changesOnly)
        {
            if (BusyPopulating || DB1 == null)
            {
                return("");
            }

            if (comboBoxDatabaseTypes.SelectedItem == null)
            {
                MessageBox.Show(this, "Select a database-type.", "Invalid database", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return("");
            }
            if (DB1 == null)
            {
                if (RefreshCalled != null)
                {
                    RefreshCalled(null, null);
                }
                else
                {
                    return("");
                }
            }
            while (ArchAngel.Providers.EntityModel.UI.PropertyGrids.FormDatabase.RefreshingSchema)
            {
                Application.DoEvents();
                System.Threading.Thread.Sleep(100);
            }
            ShowChangeScripts(DB1.Name, changesOnly);

            ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ScriptRunnerContainer scriptContainer = null;
            string db = comboBoxDatabaseTypes.SelectedItem.ToString();

            if (db == "SQL Server 2005/2008/Azure")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForSqlServer;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "Oracle")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForOracle;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "MySQL 5")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForMySql;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else
            {
                MessageBox.Show(this, "Only SQL Server is supported at this time. Support for other databases is coming soon.", "Invalid database", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return("");
            }
            //else if (db == "PostgreSQL")
            //{
            //    scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForPostgreSql;
            //    Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            //}
            //else if (db == "Firebird")
            //{
            //    scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForFirebird;
            //    Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            //}
            //else
            //    throw new NotImplementedException("Database type not handled yet: " + db);

            try
            {
                StringBuilder sb = new StringBuilder(10000);
                sb.AppendLine(scriptContainer.GetHeader(ScriptModelDatabase));

                //if (comboBoxTables.SelectedItem is ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable)
                //{
                //    ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable t = (ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable)comboBoxTables.SelectedItem;
                //    sb.AppendLine(scriptContainer.GetUpdate(t));
                //}
                //else if (comboBoxTables.SelectedItem is ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable)
                //{
                //    ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable t = (ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable)comboBoxTables.SelectedItem;

                //    if (Database.NewTables.Contains(t))
                //        sb.AppendLine(scriptContainer.GetCreate(t));
                //    else
                //        sb.AppendLine(scriptContainer.GetDelete(t));
                //}
                //else
                //{
                //    foreach (var tbl in Database.NewTables)
                //        sb.AppendLine(scriptContainer.GetCreate(tbl));

                //    foreach (var tbl in Database.ChangedTables)
                //        sb.AppendLine(scriptContainer.GetUpdate(tbl));

                //    foreach (var tbl in Database.RemovedTables)
                //        sb.AppendLine(scriptContainer.GetDelete(tbl));
                //}
                return(sb.ToString());
            }
            catch (Exception e)
            {
                //MessageBox.Show(this.Parent, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(e.Message);
            }
        }
        private string GetScriptForAll()
        {
            if (BusyPopulating)
            {
                return("");
            }

            ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ScriptRunnerContainer scriptContainer = null;
            string db = comboBoxDatabases.SelectedItem.ToString();

            if (db == "SQL Server 2005/2008/Azure")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForSqlServer;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "Oracle")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForOracle;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "MySQL")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForMySql;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "PostgreSQL")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForPostgreSql;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else if (db == "Firebird")
            {
                scriptContainer = ArchAngel.Interfaces.ProjectOptions.DatabaseScripts.Scripts.ContainerForFirebird;
                Slyce.Common.SyntaxEditorHelper.SetupEditorTemplateAndScriptLanguages(syntaxEditorScript, Slyce.Common.TemplateContentLanguage.Sql, Slyce.Common.SyntaxEditorHelper.ScriptLanguageTypes.CSharp, @"<%", @"%>");
            }
            else
            {
                throw new NotImplementedException("Database type not handled yet: " + db);
            }

            try
            {
                StringBuilder sb = new StringBuilder(10000);
                sb.AppendLine(scriptContainer.GetHeader(Database));

                //if (comboBoxTables.SelectedItem is ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable)
                //{
                //    ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable t = (ArchAngel.Interfaces.Scripting.DatabaseChanges.IChangedTable)comboBoxTables.SelectedItem;
                //    sb.AppendLine(scriptContainer.GetUpdate(t));
                //}
                //else if (comboBoxTables.SelectedItem is ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable)
                //{
                //    ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable t = (ArchAngel.Interfaces.Scripting.NHibernate.Model.ITable)comboBoxTables.SelectedItem;

                //    if (Database.NewTables.Contains(t))
                //        sb.AppendLine(scriptContainer.GetCreate(t));
                //    else
                //        sb.AppendLine(scriptContainer.GetDelete(t));
                //}
                //else
                //{
                //    foreach (var tbl in Database.NewTables)
                //        sb.AppendLine(scriptContainer.GetCreate(tbl));

                //    foreach (var tbl in Database.ChangedTables)
                //        sb.AppendLine(scriptContainer.GetUpdate(tbl));

                //    foreach (var tbl in Database.RemovedTables)
                //        sb.AppendLine(scriptContainer.GetDelete(tbl));
                //}
                return(sb.ToString());
            }
            catch (Exception e)
            {
                //MessageBox.Show(this.Parent, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(e.Message);
            }
        }