2010-08-29 41 views
7

Các phương pháp hay nhất cho việc tái cấu trúc cơ sở dữ liệu với mã EF4 đầu tiên là gì?Cách mã Refactor/DB lược đồ với mã EF 4 đầu tiên - Di chuyển dữ liệu

Tôi muốn biết cách mọi người thay đổi các lớp và cơ sở dữ liệu khi tùy chọn RecreateDatabaseIfModelChanges không khả thi. Di chuyển dữ liệu sẽ cần phải xảy ra.

Hiện nay Microsoft có một giải pháp để thực hiện điều này với mô hình đầu tiên:

http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx?PageIndex=2#comments

Có ai có một chiến lược tốt cho mã đầu tiên?

+0

Chính xác bạn đang tìm kiếm điều gì? Bạn không * có * để cấu trúc lại lược đồ DB của bạn với CF. – TheCloudlessSky

+3

bạn không phải refactor nó nếu bạn thổi nó đi và tái tạo, nhưng nếu không, bạn sẽ cần phải viết và áp dụng các kịch bản di trú đến nó sẽ không? Nếu không, nó sẽ không khớp với mã. –

Trả lời

1

Đội EF đã được làm việc trên một cuộc di cư đặc trưng cho EF rằng nên giải quyết vấn đề này.

http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx

Scott Gu cho biết chuyến thăm gần đây của mình xung quanh châu Âu rằng họ nên được phát hành tính năng này sớm. Tôi đang nín thở.

HẤP DẪN UPDATE:

này hiện đã được phát hành dưới dạng CTP: http://blogs.msdn.com/b/adonet/archive/2011/07/27/code-first-migrations-august-2011-ctp-released.aspx

1

Tôi đang làm việc trên bộ khởi tạo bối cảnh cơ sở dữ liệu sẽ thông báo cho quản trị viên web nếu mô hình và lược đồ db không đồng bộ và sẽ hiển thị những điểm khác biệt. Điều này có thể hữu ích cho các nhà phát triển, những người muốn có toàn quyền kiểm soát cả mô hình mã nguồn và lược đồ cơ sở dữ liệu đầu tiên. Check it out:

https://github.com/rialib/efextensions

1

Trong ứng dụng CodeFirst tôi, địa phương xây dựng có một lá cờ app.config mà biểu thị không phải là trong sản xuất. Khi tôi không sản xuất nó hoàn toàn nukes và tái tạo cơ sở dữ liệu. Vì người dùng cơ sở dữ liệu sản xuất của tôi KHÔNG có quyền bỏ cơ sở dữ liệu ngay cả khi biến đổi web.config của tôi bị bỏ qua bằng cách nào đó (do đó EF cố gắng tạo lại cơ sở dữ liệu), cơ sở dữ liệu sản xuất của tôi sẽ không bị xóa.

công việc của tôi đi như thế này:

  1. Kiểm tra chi nhánh sản xuất của mã với mới nhất thay đổi
  2. Nhanh chóng kiểm tra khói/hồi quy (điều này đã nên được thực hiện trước khi kiểm tra mã vào từng ngành sản xuất, nhưng chỉ trong trường hợp)
  3. Tải bản sao lưu mới nhất của cơ sở dữ liệu sản xuất của tôi và cài đặt nó trên máy chủ SQLEXPRESS địa phương của tôi
  4. Run Open DBDiff giữa cơ sở dữ liệu mã địa phương của tôi tạo ra (mặc dù nó mã sản xuất, vì nó là địa phương nó Recr ăn cơ sở dữ liệu) so với bản sao lưu sản xuất.
  5. Xem lại tập lệnh được tạo và cố gắng chạy chúng chống lại bản sao lưu sản xuất
  6. Giả sử không có lỗi xảy ra, ghi đè lên cơ sở dữ liệu mã được tạo bằng bản sao lưu sản xuất và thử nghiệm dữ liệu sản xuất để đảm bảo tất cả dữ liệu vẫn còn nguyên;
  7. Chạy tập lệnh trên cơ sở dữ liệu sản xuất thực.

BướC# 2 tự động tạo cơ sở dữ liệu mới, sạch dựa trên mô hình dữ liệu mới nhất, vì vậy tôi luôn biết rằng tôi có cơ sở dữ liệu cập nhật không có các tạo phẩm từ những nỗ lực phát triển chưa sẵn sàng sản xuất.

Các vấn đề liên quan