Ok, tôi đã phải vật lộn với điều này trong một ngày bây giờ, và đây là giải pháp cho những người tìm kiếm câu trả lời ...
Tôi giả định rằng hầu hết mọi người đọc bài này ở đây vì họ có một DbContext lớn lớp học với rất nhiều DbSet <> tài sản và phải mất một thời gian dài để tải. Bạn có thể nghĩ đến chính mình, gee, có ý nghĩa, tôi nên chia nhỏ bối cảnh, vì tôi sẽ không sử dụng tất cả các dbsets cùng một lúc và tôi sẽ chỉ tải ngữ cảnh "một phần" dựa trên tình huống mà tôi cần nó. Vì vậy, bạn chia chúng ra, chỉ để tìm ra rằng Code First di cư không hỗ trợ cách suy nghĩ cách mạng của bạn. Vì vậy, bước đầu tiên của bạn phải được chia nhỏ các bối cảnh, sau đó bạn thêm lớp MigrationConfiguration cho mỗi ngữ cảnh mới, bạn đã thêm các chuỗi kết nối có tên chính xác giống như các lớp Ngữ cảnh mới của bạn.
Sau đó, bạn cố gắng chạy vừa chia tay bối cảnh từng người một, bằng cách thực hiện Add-Migration Context1 sau đó làm Cập nhật cơ sở dữ liệu--verbose ...
Tất cả mọi thứ dường như làm việc tốt, nhưng sau đó bạn nhận thấy rằng tất cả các tiếp theo Di chuyển đã xóa tất cả các bảng khỏi lần di chuyển Trước đó và chỉ để lại các bảng trong lần di chuyển cuối cùng.
Điều này là do, mô hình Di chuyển hiện tại dự kiến Single DbContext trên mỗi Cơ sở dữ liệu và nó phải là kết quả phù hợp.
Những gì tôi cũng đã thử và ai đó đã đề xuất ở đây làm điều đó, là tạo một SuperContext duy nhất, có tất cả các bộ Db trong đó. Tạo một lớp Cấu hình di chuyển đơn lẻ và chạy lớp đó. Để lại các lớp ngữ cảnh một phần của bạn tại chỗ và cố gắng tạo nhanh và sử dụng chúng. EF phàn nàn rằng mô hình Sao lưu đã thay đổi. Một lần nữa, điều này là do EF so sánh dbcontext một phần của bạn với chữ ký bối cảnh All-Sets đã được bỏ qua từ việc di chuyển Siêu bối cảnh của bạn.
Đây là một lỗ hổng lớn trong quan điểm của tôi.
Trong trường hợp của tôi, tôi đã quyết định rằng PERFORMANCE quan trọng hơn di chuyển. Vì vậy, những gì tôi đã kết thúc làm, là sau khi tôi chạy trong bối cảnh siêu và có tất cả các bảng tại chỗ, tôi đã đi vào cơ sở dữ liệu và bảng _MigrationHistory xóa thủ công.
Bây giờ, tôi có thể khởi tạo và sử dụng các bối cảnh một phần mà không EF phàn nàn về điều đó. Nó không tìm thấy bảng MigrationHistory và chỉ di chuyển trên, cho phép tôi có một cái nhìn "một phần" của cơ sở dữ liệu.
Tất nhiên, giao dịch là bất kỳ thay đổi nào đối với mô hình sẽ phải được truyền theo cách thủ công đến cơ sở dữ liệu, vì vậy hãy cẩn thận.
Nó làm việc cho tôi mặc dù.
Đây là câu hỏi rất thú vị. Tôi tự hỏi nếu hỗ trợ nhiều bối cảnh là một phần của trường hợp sử dụng di chuyển. –
Tôi rất nghi ngờ nhiều ngữ cảnh có thể hoạt động với tính năng di chuyển tự động, nó được thiết kế để cập nhật db để trông giống như ngữ cảnh không có vấn đề gì. Bạn có thể có nhiều may mắn hơn khi phát triển các plugin bằng cách sử dụng di chuyển thủ công, so với các cơ sở dữ liệu riêng biệt để tạo ra các di chuyển rồi áp dụng tất cả chúng cho cùng một db. – Betty
Trong khi đó tôi nhìn vào các hội đồng EF 4.3, và tôi cũng nghi ngờ rằng khung di trú có thể đối phó với một số ngữ cảnh. Nhưng không có lý do kỹ thuật nào tôi có thể nghĩ đến. Với một mô hình EDM tại chỗ bạn có thể khác với cơ sở dữ liệu tìm thấy các bảng bảng hiện có tạo hoặc thay đổi và để lại kịch bản xóa bằng cách di chuyển thủ công cho người dùng. –