Für genau dieses Problem habe ich mich für ein Migrationstool entschieden:Migratordotnet .
Bei Migrationen (in jedem Tool) haben Sie eine einfache Klasse, mit der Sie Ihre Änderungen durchführen und rückgängig machen können. Hier ist ein Beispiel:
[Migration(62)]
public class _62_add_date_created_column : Migration
{
public void Up()
{
//add it nullable
Database.AddColumn("Customers", new Column("DateCreated", DateTime) );
//seed it with data
Database.Execute("update Customers set DateCreated = getdate()");
//add not-null constraint
Database.AddNotNullConstraint("Customers", "DateCreated");
}
public void Down()
{
Database.RemoveColumn("Customers", "DateCreated");
}
}
Dieses Beispiel zeigt, wie Sie flüchtige Aktualisierungen handhaben können, z. B. das Hinzufügen einer neuen Nicht-Null-Spalte zu einer Tabelle mit vorhandenen Daten. Dies kann einfach automatisiert werden, und Sie können problemlos zwischen den Versionen wechseln.
Dies war eine wirklich wertvolle Ergänzung unseres Builds und hat den Prozess immens rationalisiert .
Ich habe hier einen Vergleich der verschiedenen Migrationsframeworks in .NET gepostet:http ://benscheirman.com/2008/06/net-database-migration-tool-roundup