ฉันเพิ่งพบปัญหาเดียวกันและฉันใช้วิธีแก้ปัญหาต่อไปนี้ (ทั้งหมดจากคอนโซล Package Manager)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
เพื่อสร้างโฟลเดอร์ 2 โฟลเดอร์แยกกันในโฟลเดอร์ Migrations แต่ละConfiguration.cs
ไฟล์จะมีไฟล์ที่สร้างขึ้น น่าเสียดายที่คุณยังคงต้องเปลี่ยนชื่อConfiguration.cs
ไฟล์เหล่านั้นมิฉะนั้นจะมีข้อร้องเรียนเกี่ยวกับการมีสองไฟล์ ฉันเปลี่ยนชื่อไฟล์เป็นConfigA.cs
และConfigB.cs
แก้ไข : (มารยาท Kevin McPheat) โปรดจำไว้ว่าเมื่อเปลี่ยนชื่อไฟล์ Configuration.cs เปลี่ยนชื่อคลาสและตัวสร้าง/ แก้ไข
ด้วยโครงสร้างนี้คุณสามารถทำได้
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
ซึ่งจะสร้างไฟล์โค้ดสำหรับการย้ายข้อมูลภายในโฟลเดอร์ถัดจากไฟล์กำหนดค่า (นี่เป็นการดีที่จะเก็บไฟล์เหล่านั้นไว้ด้วยกัน)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
และสุดท้าย แต่ไม่ท้ายสุดทั้งสองคำสั่งจะใช้การย้ายข้อมูลที่ถูกต้องกับฐานข้อมูลการตอบสนองของตน
แก้ไข 08 ก.พ. 2559:
ฉันได้ทำการทดสอบกับ EF7 เวอร์ชัน 7.0.0-rc1-16348 ไปเล็กน้อย
ฉันไม่สามารถทำให้ตัวเลือก -o | --outputDir ทำงานได้ มันยังคงให้Microsoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
อย่างไรก็ตามดูเหมือนว่าในครั้งแรกที่มีการเพิ่มการย้ายข้อมูลจะถูกเพิ่มเข้าไปในโฟลเดอร์ Migrations และการย้ายข้อมูลในภายหลังสำหรับบริบทอื่นจะถูกใส่ลงในโฟลเดอร์ย่อยของการย้ายข้อมูลโดยอัตโนมัติ
ชื่อเดิมContextA
ดูเหมือนว่าจะละเมิดการตั้งชื่อบางส่วนดังนั้นตอนนี้ผมใช้และContextAContext
ContextBContext
การใช้ชื่อเหล่านี้คุณสามารถใช้คำสั่งต่อไปนี้: (โปรดทราบว่า dnx ของฉันยังใช้งานได้จากคอนโซลตัวจัดการแพ็คเกจและฉันไม่ต้องการเปิดหน้าต่าง CMD แยกต่างหากเพื่อทำการย้ายข้อมูล)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
นี้จะสร้างภาพนางแบบและการโยกย้ายครั้งแรกในโฟลเดอร์Migrations
ContextAContext
มันจะสร้างโฟลเดอร์ชื่อContextB
ที่มีไฟล์เหล่านี้สำหรับContextBContext
ฉันเพิ่มContextA
โฟลเดอร์ด้วยตนเองและย้ายไฟล์การย้ายจากContextAContext
ไปยังโฟลเดอร์นั้น จากนั้นฉันเปลี่ยนชื่อเนมสเปซภายในไฟล์เหล่านั้น (ไฟล์สแน็ปช็อตการย้ายข้อมูลครั้งแรกและโปรดทราบว่ามีไฟล์ที่สามอยู่ภายใต้ไฟล์การย้ายข้อมูลเริ่มต้น ... designer.cs) ฉันต้องเพิ่มลง.ContextA
ในเนมสเปซและจากนั้นเฟรมเวิร์กจะจัดการมันโดยอัตโนมัติอีกครั้ง
การใช้คำสั่งต่อไปนี้จะสร้างการโยกย้ายใหม่สำหรับแต่ละบริบท
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
และไฟล์ที่สร้างจะใส่ในโฟลเดอร์ที่ถูกต้อง