ฉันต้องการเพิ่มความกระจ่างบางอย่างให้กับกระทู้นี้:
Update-Database -TargetMigration:"name_of_migration"
สิ่งที่คุณกำลังทำข้างต้นคือการบอกว่าคุณต้องการย้อนกลับการโยกย้ายทั้งหมดจนกว่าคุณจะเหลือการโยกย้ายที่ระบุ ดังนั้นหากคุณใช้ GET-MIGRATIONS และคุณพบว่าคุณมี A, B, C, D และ E การใช้คำสั่งนี้จะย้อนกลับ E และ D เพื่อพาคุณไปที่ C:
Update-Database -TargetMigration:"C"
นอกจากนี้หากใครไม่สามารถแสดงความคิดเห็นในทางตรงกันข้ามฉันสังเกตเห็นว่าคุณสามารถใช้ค่าลำดับและสวิตช์ -Target สั้น (ดังนั้น -Target เป็นเช่นเดียวกับ -TargetMigration) หากคุณต้องการย้อนกลับการโยกย้ายทั้งหมดและเริ่มต้นใหม่คุณสามารถใช้:
Update-Database -Target:0
0 ข้างบนจะย้อนกลับแม้กระทั่งการโยกย้ายครั้งแรก ( นี่คือคำสั่งทำลาย - ให้แน่ใจว่าคุณรู้ว่าคุณกำลังทำอะไรก่อนใช้! ) - สิ่งที่คุณไม่สามารถทำได้ถ้าคุณใช้ไวยากรณ์ข้างต้นที่ต้องการชื่อ การโยกย้ายเป้าหมาย (ชื่อของการโยกย้าย 0 ไม่มีอยู่ก่อนการโยกย้ายถูกนำไปใช้!) ดังนั้นในกรณีนี้คุณต้องใช้ค่า 0 (ลำดับ) ในทำนองเดียวกันหากคุณใช้การย้ายข้อมูล A, B, C, D และ E (ตามลำดับ) ดังนั้นลำดับ 1 ควรอ้างถึง A ลำดับ 2 ควรอ้างถึง B และอื่น ๆ ดังนั้นในการย้อนกลับไปที่ B คุณสามารถใช้:
Update-Database -TargetMigration:"B"
หรือ
Update-Database -TargetMigration:2
แก้ไขตุลาคม 2019:
ตามคำตอบที่เกี่ยวข้องกับคำถาม ที่คล้ายกันคำสั่งที่ถูกต้อง-Target
สำหรับ EF Core 1.1 ในขณะที่มัน-Migration
สำหรับ EF Core 2.0