155

Vì một số lý do, di chuyển của tôi dường như đã bị xáo trộn/hỏng/bất cứ điều gì. Tôi đang ở điểm mà tôi chỉ muốn bắt đầu lại, vậy có cách nào để hoàn toàn hoàn tác tất cả các di chuyển, xóa lịch sử và xóa mã di chuyển, vì vậy tôi quay lại hình vuông không?Khung thực thể - Bắt đầu lại - Hoàn tác/Rollback Tất cả các di chuyển

ví dụ) PM> Disable-Migrations hoặc Rollback-Migrations

Tôi không muốn để "cập nhật" để một bước chuyển đổi ban đầu (ví dụ: một cái gì đó giống như một mục tiêu InitialSchema) bởi vì tôi không thể tìm thấy nó nữa.

Trả lời

331

Bạn có thể rollback đến bất kỳ di cư bằng cách sử dụng:

Update-Database -TargetMigration:"MigrationName" 

Nếu bạn muốn rollback tất cả di chuyển nào bạn có thể sử dụng:

Update-Database -TargetMigration:0 

hoặc tương đương:

Update-Database -TargetMigration:$InitialDatabase 

Trong một số trường hợp bạn cũng có thể xóa cơ sở dữ liệu và tất cả các lớp di chuyển.

+6

như thường lệ, bạn là người giỏi nhất. – drzaus

+0

bạn đã lưu cho tôi một loạt rắc rối. cảm ơn. –

+0

Câu trả lời hay! :) – Rushino

8

Để rõ ràng, nếu sử dụng LocalDb, khi bạn muốn bắt đầu từ đầu chỉ cần xóa cơ sở dữ liệu thông qua Database Explorer và sau đó nhập enable-migrations -force trong Bảng điều khiển trình quản lý gói. Không xóa cơ sở dữ liệu thông qua thư mục App_Data hoặc bạn sẽ có issue sau.

+2

Hãy cẩn thận khi thực hiện điều này vì nó sẽ ghi đè lên Migrations \ Configuration.cs của bạn mà không cần cảnh báo! – cgatian

+0

Cảm ơn bạn đã cảnh báo, tôi đã bỏ rất nhiều đoạn mã đầu tiên sau một thời gian, rất hay để có tất cả mã của bạn một lần, đặt, có kiểm soát mã nguồn cho cơ sở dữ liệu của bạn nhưng tôi không thấy bất kỳ lợi ích và chuyển về cơ sở dữ liệu trước. Tôi sử dụng Red Gate Sql So sánh để theo dõi tất cả các vùng đồng bằng. –

1

Đối với Entity Framework Core:

Update-Database -Migration:0 
Remove-Migration 
Các vấn đề liên quan