8

Trong dự án của tôi, chúng tôi có một mô hình chi nhánh có một nhánh phát triển riêng biệt và có một chi nhánh riêng biệt cho mỗi bản phát hành. Nó có thể trông giống như sau:Entity Framework 6 Code Di cư đầu tiên - nhiều chi nhánh để sản xuất

dev   ______  ______ 
     / \ / \ 
master --+---+----+---+---+----+----+--- (...) 
      r1 \______/ r2 \_______/ 

Vì vậy, chúng tôi phát triển trên dev hợp nhất để làm chủ và sau đó chúng tôi tạo nhánh phát hành (r1, r2, ...).

Chúng tôi muốn sử dụng di chuyển EF 6 (thủ công không tự động) nhưng chúng tôi có câu hỏi mà chúng tôi không biết cách trả lời.

Hãy tưởng tượng này:

dev   _(1)__  ____(4) 
     / \ / \ 
master --+---+----+---+---+----+-(5)*-+--- (...) 
      r1 \_(2)__/ r2 \(3)______/ 

Mỗi số là một sự chuyển đổi. Chúng đã được thêm vào điều khiển nguồn trên mỗi nhánh VÀ đã được áp dụng cho cơ sở dữ liệu của các cá thể sản xuất của dự án của chúng tôi (chúng tôi hỗ trợ nhiều bản phát hành trong một thời gian chỉ để sửa lỗi), vì vậy chúng tôi không thể hạ cấp chúng, chúng chỉ có thể Up(). Dấu hoa thị đánh dấu thời điểm chúng tôi muốn phân tích. Chúng tôi muốn di cư để làm việc theo cách này:

  • cơ sở dữ liệu r1 chỉ có di cư (2) áp dụng
  • cơ sở dữ liệu r2 có (1), (2) và (3) áp dụng
  • cơ sở dữ liệu tổng thể có (1) , (2), (4) và (5) áp dụng
  • cơ sở dữ liệu dev có (1), (2) và (4) áp dụng

Hơn nữa:

  • chúng tôi không thể mất một chút dữ liệu trong cơ sở dữ liệu của chúng tôi
  • cơ sở dữ liệu r1 phải được cập nhật thành cơ sở dữ liệu r2 (hoặc bất kỳ cơ sở dữ liệu nào khác trong tương lai) không có lỗi. được tạo dưới dạng r2 hoặc được cập nhật từ các phiên bản cũ hơn) tương ứng với mô hình mã đầu tiên của nó.

Có thể thực hiện được không? Nếu có, làm thế nào?

Nếu bạn cần thêm chi tiết, vui lòng hỏi.

Trả lời

11

tôi có thể cố gắng giải thích những gì bạn có thể làm trong mỗi trường hợp, nhưng nó khá phức tạp và tôi sẽ không thể giải thích nó cũng như nó đã giải thích ở đây:

Code First Migrations in Team Environments

Mặc dù phức tạp và bạn sẽ phải tham khảo tài liệu này thường xuyên để hợp nhất các chi nhánh, nếu bạn làm theo tài liệu này bạn sẽ thấy rằng nó giải quyết tất cả các câu hỏi của bạn.

Tuyên bố từ chối trách nhiệm: Tôi biết SO nên tự chứa, nhưng giải thích quá phức tạp và lâu đến mức tôi thậm chí không thể thêm bản tóm tắt tại đây. Tôi hy vọng rằng các tài liệu MSDN liên kết không biến mất.

+0

Sau một thời gian thử nghiệm và kiểm tra, tôi có thể xác nhận rằng nó có vẻ hoạt động! Chúng tôi thường sử dụng "Tùy chọn 1: Thêm di chuyển 'hợp nhất' trống". Cảm ơn! –

+0

Trong trường hợp bản gốc đã được phát hành, tốt hơn bạn nên tạo lại các nhánh di chuyển chi nhánh để luôn bị nhầm lẫn khi một số nhà phát triển trong một chi nhánh tính năng thực hiện các thay đổi mô hình không tương thích với dấu thời gian di chuyển trước một số lần di chuyển chính. – JustAMartin

+0

cảm ơn vì liên kết đó, đó là một bài đọc hay! – Phil

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