За точно този проблем избрах да използвам инструмент за мигриране:Migratordotnet .
С миграциите (във всеки инструмент) имате прост клас, използван за извършване на вашите промени и отмяната им. Ето един пример:
[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");
}
}
Този пример показва как можете да обработвате непостоянни актуализации, като добавяне на нова ненулева колона към таблица, която има съществуващи данни. Това може лесно да се автоматизира и можете лесно да преминавате нагоре и надолу между версиите.
Това беше наистина ценно допълнение към нашата компилация и рационализира процеса изключително .
Публикувах сравнение на различните рамки за миграция в .NET тук:http ://benscheirman.com/2008/06/net-database-migration-tool-roundup