Пример #1
0
        public string Down(DatabaseConnection conn, string prevVersion)
        {
            string script = Down(prevVersion);

            SqlScriptExecuter.ExecuteMigrtionScript(script, conn.ConnectionString, conn.ProviderName, conn.ServerType);

            //SqlScriptExecuter.UpdateSchemaVersion(prevVersion, conn.ConnectionString, conn.ProviderName, conn.ServerType);

            return script;
        }
Пример #2
0
        public string ProcessMigrateDown(string connectionString)
        {
            try
            {

                string script = "";

                string currentVersionFromDatabase = SqlScriptExecuter.GetSchemaVersion(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);

                if (currentVersionFromDatabase != "00000000000000" )
                {
                    string migrationFilePath = MigrationFactory.GetMigrationFilePathForVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath);

                    string prevVersion = GetPreviousVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath);

                    if (string.Empty != prevVersion)
                    {
                        if (migrationFilePath != null)
                        {
                            MigrationFactory factory = MigrationFactory.GetFactoryForDatabaseType(MigrationConfiguration.ServerType);

                            Migration migration = factory.GetMigration(migrationFilePath, MigrationConfiguration.migrationLibraryAssemblyPath);

                            string version = MigrationFactory.GetVersionFromMigrationFilePath(migrationFilePath);

                            DatabaseConnection db = new DatabaseConnection(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);

                            string executedMigration = "Executed Migration Version " + version + " Down " + Environment.NewLine;

                            try
                            {
                                script = migration.Down(db, prevVersion);
                            }
                            catch (Exception ex)
                            {
                                return "Error:" + ex.Message;
                            }

                            //try
                            //{
                            //    SqlScriptExecuter.UpdateSchemaVersion(prevVersion, connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);
                            //}
                            //catch
                            //{
                            //    return "Error: rolled back from version " + currentVersionFromDatabase + " but unable to set previous version to " + prevVersion;
                            //}

                            return executedMigration + script.Replace("begin transaction", "").Replace("commit transaction", "") + Environment.NewLine + "current version is: " + prevVersion;
                        }
                        else
                        {
                            return "Error: migration file with the specified version does not exist. Command aborted. - current database version is: " + currentVersionFromDatabase;
                        }
                    }
                    else
                    {
                        //if (prevVersion == null)
                        //{
                        //    return "Done: Prev version does not exist " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase;
                        //}
                        //else
                        //{
                            return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase;
                        //}

                    }
                }
                else
                {
                    return "Done: Prev version does not exist - current database version : " + currentVersionFromDatabase;
                }
            }
            catch (Exception ex)
            {
                return "Error:" + Environment.NewLine + ex.Message;
            }
        }
Пример #3
0
        public string ProcessMigrateUp(string connectionString)
        {
            try
            {
                string script = "";

                string currentVersionFromDatabase = SqlScriptExecuter.GetSchemaVersion(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);

                string nextVersion = GetNextVersion(currentVersionFromDatabase, MigrationConfiguration.migrationClassPath);

                if(!string.IsNullOrEmpty(nextVersion))
               // if (nextVersion != null)
                {
                    string migrationFilePath = MigrationFactory.GetMigrationFilePathForVersion(nextVersion, MigrationConfiguration.migrationClassPath);

                    if (migrationFilePath != null)
                    {
                        MigrationFactory factory = MigrationFactory.GetFactoryForDatabaseType(MigrationConfiguration.ServerType);

                        Migration migration = factory.GetMigration(migrationFilePath, MigrationConfiguration.migrationLibraryAssemblyPath);

                        string version = MigrationFactory.GetVersionFromMigrationFilePath(migrationFilePath);

                        DatabaseConnection db = new DatabaseConnection(connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);

                        string executedMigration = "Executed Migration Version " + version + " Up " + Environment.NewLine;

                        try
                        {
                            script = migration.Up(db, nextVersion);
                        }
                        catch (Exception ex)
                        {
                            return "Error:" + ex.Message;
                        }

                        //try
                        //{
                        //    SqlScriptExecuter.UpdateSchemaVersion(nextVersion, connectionString, MigrationConfiguration.ProviderName, MigrationConfiguration.ServerType);
                        //}
                        //catch
                        //{
                        //    return "Error: changed from current database version " + currentVersionFromDatabase + " but unable to set next version to " + nextVersion;
                        //}

                        return executedMigration + script.Replace("begin transaction", "").Replace("commit transaction", "") + Environment.NewLine + "current version is: " + nextVersion;
                    }
                    else
                    {
                        return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase;
                    }
                }
                else
                {
                    if (nextVersion == null)
                    {
                        return "Done: Next version does not exist " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase;
                    }
                    else
                    {
                        return "Error: migration file with the specified version does not exist. Command aborted. " + Environment.NewLine + " current database version is: " + currentVersionFromDatabase;
                    }
                }
            }
            catch (Exception ex)
            {
                return "Error:" + Environment.NewLine + ex.Message;
            }
        }
Пример #4
0
 public string Up(DatabaseConnection conn)
 {
     throw new Exception("Locked Migration");
 }