Do tego właśnie problemu wybrałem narzędzie do migracji:Migratordotnet .
Dzięki migracjom (w dowolnym narzędziu) masz prostą klasę używaną do wykonywania zmian i ich cofania. Oto przykład:
[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");
}
}
Ten przykład pokazuje, jak obsługiwać nietrwałe aktualizacje, takie jak dodawanie nowej kolumny o wartości innej niż null do tabeli, która zawiera istniejące dane. Można to łatwo zautomatyzować i łatwo przechodzić między wersjami.
To był naprawdę cenny dodatek do naszej kompilacji i znacznie usprawnił proces ogromnie .
Porównanie różnych frameworków migracyjnych w .NET opublikowałem tutaj:http ://benscheirman.com/2008/06/net-database-migration-tool-roundup