Làm cách nào để hoàn tác lệnh Add-Migration cuối cùng?


83

Tôi đã tạo một quá trình di chuyển bằng Add-Migrationlệnh, nhưng tôi muốn thay đổi tên của lần di chuyển đó. Làm cách nào để hoàn tác lệnh di chuyển để tôi có thể tạo lại lệnh bằng tên mới mong muốn?

Nó chỉ là vấn đề xóa các tệp đã tạo hay đây có thể là một ý tưởng tồi?

Câu trả lời:


135

Nếu bạn chưa sử dụng, Update-Databasebạn chỉ có thể xóa tệp di chuyển. Nếu bạn đã chạy bản cập nhật, bạn nên khôi phục nó bằng cách sử dụng Update-Database -TargetMigration "NameOfPreviousMigration"rồi xóa tệp di chuyển.

Tài liệu tham khảo:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


điều gì sẽ xảy ra nếu đó là lần di chuyển đầu tiên được thêm vào?
Jimmyt1988

@ Jimmyt1988, sử dụng Update-Database –TargetMigration: $ InitialDatabase
Seraphim

Sau đó xóa nó? Tôi không hiểu. Sau đó xóa cái gì?
tnk479

@ tnk479 tệp di chuyển. Đã chỉnh sửa để làm cho nó rõ ràng hơn
Colin

Thật buồn khi thấy rằng phiên bản cũ hơn của EF (Giống như EF 6) không có drop-databaseremove-migrationlệnh
Hamza Khanzada

15

Nếu bạn chưa thực hiện quá trình di chuyển với Update-Database, bạn có thể chạy Add-Migrationlại với cùng tên (bạn có thể cần sử dụng -Force) để thực thi lại giàn giáo. Điều này được ghi nhận trong đầu ra của Add-Migrationlệnh.


Đây không phải là một giải pháp tốt vì điều này sẽ không khôi phục ApplicationDbContextModelSnapshot
Trojaner

@Trojaner, bạn nói đúng, vì vậy phản hồi stackoverflow.com/a/46921867/690958 là giải pháp tốt hơn
Alberto León

11

Chỉ cần sử dụng lệnh

Remove-migration

Nó sẽ xóa lần di chuyển được thêm gần đây nhất và cập nhật ảnh chụp nhanh. Nó sẽ không ảnh hưởng đến cơ sở dữ liệu vì vậy bạn phải khôi phục db ngay từ đầu.


5
Chỉ có trong EF Core.
John

Tôi ước nó sẽ ở đó trong EF 6 cùng với drop-databasecác lệnh .. Tôi đã quá quen với nó
Hamza Khanzada

4

Với EntityFrameworkCore 2.0 đi kèm với ảnh chụp nhanh mô hình. Bạn sẽ cần chạy lệnh xóa di chuyển để cập nhật ảnh chụp nhanh mô hình. Tôi đã đọc rằng EF Core sẽ nhận ra bất kỳ bản cập nhật nào và hoàn nguyên ảnh chụp nhanh cho bạn nếu bạn xóa quá trình di chuyển theo cách thủ công nhưng điều này không hiệu quả với tôi.

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/mispose/cli/dotnet#dotnet-ef-migrations-remove


3

Để thêm vào câu trả lời của @Ben, khi sử dụng dotnet eflệnh đa dạng, đây là lệnh loại bỏ bạn cần:

dotnet ef migrations remove

Thao tác này sẽ xóa lần di chuyển cuối cùng của bạn và cập nhật ảnh chụp nhanh mô hình.


2

Cập nhật lần di chuyển hoàn hảo cuối cùng của bạn qua lệnh này:

Update-Database –TargetMigration

0

Chỉ cần sử dụng lệnh:

Update-Database nameMigration -context nameContext

Và sau đó

Remove-migration -Context nameContext
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.