public virtual void ApplyMigrationUp(IMigrationInfo migrationInfo, bool useTransaction) { if (migrationInfo == null) { throw new ArgumentNullException("migrationInfo"); } if (!_alreadyOutputPreviewOnlyModeWarning && Processor.Options.PreviewOnly) { _announcer.Heading("PREVIEW-ONLY MODE"); _alreadyOutputPreviewOnlyModeWarning = true; } if (!migrationInfo.IsAttributed() || !VersionLoader.VersionInfo.HasAppliedMigration(migrationInfo.Version)) { var name = migrationInfo.GetName(); _announcer.Heading(string.Format("{0} migrating", name)); _stopWatch.Start(); using (IMigrationScope scope = _migrationScopeHandler.CreateOrWrapMigrationScope(useTransaction)) { try { if (migrationInfo.IsAttributed() && migrationInfo.IsBreakingChange && !RunnerContext.PreviewOnly && !RunnerContext.AllowBreakingChange) { throw new InvalidOperationException( string.Format( "The migration {0} is identified as a breaking change, and will not be executed unless the necessary flag (allow-breaking-changes|abc) is passed to the runner.", migrationInfo.GetName())); } ExecuteMigration(migrationInfo.Migration, (m, c) => m.GetUpExpressions(c)); if (migrationInfo.IsAttributed()) { VersionLoader.UpdateVersionInfo(migrationInfo.Version, migrationInfo.Description ?? migrationInfo.Migration.GetType().Name); } scope.Complete(); } catch { if (useTransaction && scope.IsActive) { scope.Cancel(); // SQLAnywhere needs explicit call to rollback transaction } throw; } _stopWatch.Stop(); _announcer.Say(string.Format("{0} migrated", name)); _announcer.ElapsedTime(_stopWatch.ElapsedTime()); } } }
public virtual void ApplyMigrationDown(IMigrationInfo migrationInfo, bool useTransaction) { if (migrationInfo == null) { throw new ArgumentNullException("migrationInfo"); } var name = migrationInfo.GetName(); _announcer.Heading(string.Format("{0} reverting", name)); _stopWatch.Start(); using (IMigrationScope scope = _migrationScopeHandler.CreateOrWrapMigrationScope(useTransaction)) { ExecuteMigration(migrationInfo.Migration, (m, c) => m.GetDownExpressions(c)); if (migrationInfo.IsAttributed()) { VersionLoader.DeleteVersion(migrationInfo.Version); } scope.Complete(); _stopWatch.Stop(); _announcer.Say(string.Format("{0} reverted", name)); _announcer.ElapsedTime(_stopWatch.ElapsedTime()); } }
private static void WriteSqlFile(IMigrationContext migrationContext, IMigrationGenerator migrationGenerator, string sqlScriptsDirectory, IMigrationInfo migration) { IEnumerable <string> sqlExpressions = migration.GetSqlExpressions(migrationContext, migrationGenerator); string fileName = $"{migration.GetName().Replace(": ", "_")}.sql"; string path = Path.Combine(sqlScriptsDirectory, fileName); File.WriteAllLines(path, sqlExpressions); }
public virtual void ApplyMigrationUp(IMigrationInfo migrationInfo, bool useTransaction) { if (migrationInfo == null) { throw new ArgumentNullException("migrationInfo"); } if (!_alreadyOutputPreviewOnlyModeWarning && Processor.Options.PreviewOnly) { _announcer.Heading("PREVIEW-ONLY MODE"); _alreadyOutputPreviewOnlyModeWarning = true; } if (!migrationInfo.IsAttributed() || !VersionLoader.VersionInfo.HasAppliedMigration(migrationInfo.Version)) { var name = migrationInfo.GetName(); _announcer.Heading(string.Format("{0} migrating", name)); _stopWatch.Start(); using (IMigrationScope scope = _migrationScopeHandler.CreateOrWrapMigrationScope(useTransaction)) { try { ExecuteMigration(migrationInfo.Migration, (m, c) => m.GetUpExpressions(c)); if (migrationInfo.IsAttributed()) { VersionLoader.UpdateVersionInfo(migrationInfo.Version, migrationInfo.Description ?? migrationInfo.Migration.GetType().Name); } scope.Complete(); } catch { if (useTransaction && scope.IsActive) { scope.Cancel(); // SQLAnywhere needs explicit call to rollback transaction } throw; } _stopWatch.Stop(); _announcer.Say(string.Format("{0} migrated", name)); _announcer.ElapsedTime(_stopWatch.ElapsedTime()); } } }
public virtual void ApplyMigrationUp(IMigrationInfo migrationInfo, bool useTransaction) { if (migrationInfo == null) throw new ArgumentNullException("migrationInfo"); if (!_alreadyOutputPreviewOnlyModeWarning && Processor.Options.PreviewOnly) { _announcer.Heading("PREVIEW-ONLY MODE"); _alreadyOutputPreviewOnlyModeWarning = true; } if (!migrationInfo.IsAttributed() || !VersionLoader.VersionInfo.HasAppliedMigration(migrationInfo.Version)) { var name = migrationInfo.GetName(); _announcer.Heading(string.Format("{0} migrating", name)); _stopWatch.Start(); using (IMigrationScope scope = _migrationScopeHandler.CreateOrWrapMigrationScope(useTransaction)) { ExecuteMigration(migrationInfo.Migration, (m, c) => m.GetUpExpressions(c)); if (migrationInfo.IsAttributed()) { VersionLoader.UpdateVersionInfo(migrationInfo.Version, migrationInfo.Description ?? migrationInfo.Migration.GetType().Name); } scope.Complete(); _stopWatch.Stop(); _announcer.Say(string.Format("{0} migrated", name)); _announcer.ElapsedTime(_stopWatch.ElapsedTime()); } } }
public virtual void ApplyMigrationDown(IMigrationInfo migrationInfo, bool useTransaction) { if (migrationInfo == null) throw new ArgumentNullException("migrationInfo"); var name = migrationInfo.GetName(); _announcer.Heading(string.Format("{0} reverting", name)); _stopWatch.Start(); using (IMigrationScope scope = _migrationScopeHandler.CreateOrWrapMigrationScope(useTransaction)) { ExecuteMigration(migrationInfo.Migration, (m, c) => m.GetDownExpressions(c)); if (migrationInfo.IsAttributed()) VersionLoader.DeleteVersion(migrationInfo.Version); scope.Complete(); _stopWatch.Stop(); _announcer.Say(string.Format("{0} reverted", name)); _announcer.ElapsedTime(_stopWatch.ElapsedTime()); } }