För just detta problem valde jag att använda ett migreringsverktyg:Migratordotnet .
Med migrering (i vilket verktyg som helst) har du en enkel klass som används för att utföra dina ändringar och ångra dem. Här är ett exempel:
[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");
}
}
Det här exemplet visar hur du kan hantera flyktiga uppdateringar, som att lägga till en ny kolumn som inte är null i en tabell som har befintliga data. Detta kan enkelt automatiseras och du kan enkelt gå upp och ner mellan versionerna.
Detta har varit ett riktigt värdefullt tillägg till vår konstruktion och har effektiviserat processen oväsentligt .
Jag postade en jämförelse av de olika migreringsramverken i .NET här:http ://benscheirman.com/2008/06/net-database-migration-tool-roundup