Untuk masalah ini, saya memilih untuk menggunakan alat migrasi:Migratordotnet .
Dengan migrasi (dalam alat apa pun), Anda memiliki kelas sederhana yang digunakan untuk melakukan perubahan dan membatalkannya. Ini contohnya:
[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");
}
}
Contoh ini menunjukkan bagaimana Anda dapat menangani pembaruan yang tidak stabil, seperti menambahkan kolom bukan-null baru ke tabel yang memiliki data yang sudah ada. Ini dapat diotomatisasi dengan mudah, dan Anda dapat dengan mudah naik turun antar versi.
Ini telah menjadi tambahan yang sangat berharga untuk bangunan kami, dan telah merampingkan proses sangat .
Saya memposting perbandingan berbagai kerangka kerja migrasi di .NET di sini:http ://benscheirman.com/2008/06/net-database-migration-tool-roundup