Đối với vấn đề này, tôi đã chọn sử dụng công cụ di chuyển: Migratordotnet .
Với việc di chuyển (trong bất kỳ công cụ nào), bạn có một lớp đơn giản được sử dụng để thực hiện các thay đổi của mình và hoàn tác chúng. Đây là một ví dụ:
[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");
}
}
Ví dụ này cho thấy cách bạn có thể xử lý các cập nhật dễ bay hơi, chẳng hạn như thêm một cột không rỗng mới vào bảng có dữ liệu hiện có. Điều này có thể được tự động hóa dễ dàng và bạn có thể dễ dàng lên xuống giữa các phiên bản.
Đây là một bổ sung thực sự có giá trị cho bản dựng của chúng tôi và đã hợp lý hóa quá trình vô cùng .
Tôi đã đăng so sánh các khung di chuyển khác nhau trong .NET tại đây: http ://benscheirman.com/2008/06/net-database-migration-tool-roundup