Tôi vừa gặp phải vấn đề tương tự và tôi đã sử dụng giải pháp sau (tất cả từ Bảng điều khiển trình quản lý gói)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Thao tác này sẽ tạo ra 2 thư mục riêng biệt trong thư mục Migrations. Mỗi sẽ chứa Configuration.cs
tệp được tạo . Thật không may, bạn vẫn phải đổi tên các Configuration.cs
tệp đó nếu không sẽ có khiếu nại về việc có hai trong số chúng. Tôi đã đổi tên tệp của mình thành ConfigA.cs
vàConfigB.cs
CHỈNH SỬA : (Kevin McPheat lịch sự) Hãy nhớ khi đổi tên tệp Configuration.cs, hãy đổi tên lớp và hàm tạo / EDIT
Với cấu trúc này, bạn có thể đơn giản làm
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Thao tác này sẽ tạo các tệp mã cho việc di chuyển bên trong thư mục bên cạnh tệp cấu hình (điều này thật tuyệt khi giữ các tệp đó lại với nhau)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Và cuối cùng nhưng không kém phần quan trọng, hai lệnh đó sẽ áp dụng các chuyển đổi chính xác cho cơ sở dữ liệu tương ứng của chúng.
CHỈNH SỬA ngày 08 tháng 2 năm 2016:
Tôi đã thực hiện một thử nghiệm nhỏ với EF7 phiên bản 7.0.0-rc1-16348
Tôi không thể làm cho tùy chọn -o | --outputDir hoạt động. Nó tiếp tục choMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Tuy nhiên, có vẻ như lần đầu tiên một quá trình di chuyển được thêm, nó sẽ được thêm vào thư mục Migrations và một lần di chuyển tiếp theo cho một ngữ cảnh khác sẽ tự động được đưa vào một nhóm nhỏ các di chuyển.
Các tên ban đầu ContextA
dường như vi phạm một số quy ước đặt tên nên bây giờ tôi sử dụng ContextAContext
và ContextBContext
. Sử dụng những tên này, bạn có thể sử dụng các lệnh sau: (lưu ý rằng dnx của tôi vẫn hoạt động từ bảng điều khiển trình quản lý gói và tôi không muốn mở một cửa sổ CMD riêng để thực hiện di chuyển)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Thao tác này sẽ tạo một ảnh chụp nhanh mô hình và lần di chuyển đầu tiên trong Migrations
thư mục cho ContextAContext
. Nó sẽ tạo một thư mục có tên ContextB
chứa các tệp này choContextBContext
Tôi đã thêm một ContextA
thư mục theo cách thủ công và di chuyển các tệp di chuyển từ ContextAContext
vào thư mục đó. Sau đó, tôi đổi tên không gian tên bên trong các tệp đó (tệp ảnh chụp nhanh, quá trình di chuyển ban đầu và lưu ý rằng có tệp thứ ba trong tệp di chuyển ban đầu ... Designer.cs). Tôi phải thêm .ContextA
vào không gian tên, và từ đó khung xử lý tự động trở lại.
Sử dụng các lệnh sau sẽ tạo ra một sự di chuyển mới cho từng ngữ cảnh
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
và các tệp đã tạo được đặt vào đúng thư mục.