public SchemaSpecification UseSchema(string schemaName) { var migration = new UseSchemaMigration(_databaseName, schemaName, Prerequisites); MigrationHistoryBuilder.Append(migration); migration.AddToParent(); return(new SchemaSpecification(migration, MigrationHistoryBuilder)); }
public CustomSqlSpecification Execute(string up, string down = null) { var migration = new CustomSqlMigration(_databaseName, up, down, Prerequisites); MigrationHistoryBuilder.Append(migration); migration.AddToParent(); return(new CustomSqlSpecification(migration, MigrationHistoryBuilder)); }
public TableSpecification CreateTable(string tableName) { var migration = new CreateTableMigration(_migration, tableName, Prerequisites); MigrationHistoryBuilder.Append(migration); migration.AddToParent(); return(new TableSpecification(migration, MigrationHistoryBuilder)); }
public IndexSpecification CreateIndex(params ColumnSpecification[] columns) { var childMigration = new CreateIndexMigration( _migration, columns.Select(c => c.Migration), Prerequisites); MigrationHistoryBuilder.Append(childMigration); childMigration.AddToParent(); return(new IndexSpecification(childMigration, MigrationHistoryBuilder)); }
public ForeignKeySpecification CreateForeignKey(PrimaryKeySpecification referencing, bool cascadeDelete = false, bool cascadeUpdate = false) { var childMigration = new CreateForeignKeyMigration( _migration, referencing.Migration, cascadeDelete, cascadeUpdate, Prerequisites); MigrationHistoryBuilder.Append(childMigration); childMigration.AddToParent(); return(new ForeignKeySpecification(MigrationHistoryBuilder)); }
private ColumnSpecification CreateColumn(string columnName, string typeDescriptor, bool nullable) { var childMigration = new CreateColumnMigration( _migration, columnName, typeDescriptor, nullable, Prerequisites); MigrationHistoryBuilder.Append(childMigration); childMigration.AddToParent(); return(new ColumnSpecification(childMigration, MigrationHistoryBuilder)); }
public void AddMigration(Migration migration) { var migrationsAffected = new MigrationHistoryBuilder(); migrationsAffected.Append(migration); string[] rollbackSql = migration.GenerateRollbackSql(migrationsAffected, this); var mementos = migrationsAffected.MigrationHistory.GetMementos().ToList(); string[] deleteStatements = GenerateDeleteStatements(_databaseName, mementos); _sql = _sql.InsertRange(0, deleteStatements); _sql = _sql.InsertRange(0, rollbackSql); _ahead = _ahead.Subtract(migrationsAffected.MigrationHistory); }
public bool AddMigration(Migration migration) { if (_working.Contains(migration)) { return(false); } foreach (var prerequisite in migration.AllPrerequisites .Where(p => _difference.Contains(p))) { if (!AddMigration(prerequisite)) { return(false); } } _working = _working.Push(migration); var migrationsAffected = new MigrationHistoryBuilder(); migrationsAffected.Append(migration); string[] result = migration.GenerateSql(migrationsAffected, this); _sql = _sql.AddRange(result); var mementos = migrationsAffected.MigrationHistory.GetMementos().ToList(); _sql = _sql.Add(GenerateInsertStatement(_databaseName, mementos)); if (mementos.SelectMany(m => m.Prerequisites).SelectMany(p => p.Value).Any()) { _sql = _sql.Add(GeneratePrerequisiteInsertStatements(_databaseName, mementos)); } _difference = _difference.Subtract(migrationsAffected.MigrationHistory); _working = _working.Pop(); return(true); }