14

Tôi đang tạo ứng dụng MVC với .Net Core và tôi cần tạo tập lệnh di chuyển.Tôi có thể tạo tập lệnh di chuyển với mã EF trước và .net lõi

Với EF6 tôi đã chạy lệnh

update-database -script 

nhưng khi tôi cố gắng làm điều tương tự với .net Core được ném ngoại lệ tiếp theo:

Update-Cơ sở dữ liệu: Một thông số không thể được tìm thấy khớp với thông số tên 'script'

Bạn có biết liệu có tương đương với EF7 không?

Trả lời

27

Theo EF documentation bạn có thể sử dụng lệnh Script-Migration.

Nếu bạn muốn chỉ tập lệnh tất cả các lần di chuyển, bạn có thể chỉ cần gọi nó từ bảng điều khiển Trình quản lý gói như vậy. Nếu bạn chỉ muốn viết các thay đổi từ lần di chuyển cuối cùng, bạn có thể gọi nó như sau:

Script-Migration -From <PreviousMigration> -To <LastMigration> 

Hãy chắc chắn kiểm tra tài liệu, có thêm một vài tùy chọn cho lệnh.

+1

Công cụ di chuyển tập lệnh dường như không hoạt động để hạ cấp (khi di chuyển sang cũ hơn di chuyển từ). Bất kỳ ý tưởng nào về cách tạo tập lệnh 'hoàn tác'? – Nullius

+1

@Nullius bạn không muốn gọi nó, hoặc nhìn thấy nó như một "undoScript" của nó, bạn chỉ cần thực hiện hoàn tác của bạn trên mã của bạn và sau đó cập nhật Db và nhận được các kịch bản mới nhất ... –

+1

Chúng tôi có một máy chủ triển khai cũng quản lý di chuyển db. Ví dụ: khi triển khai được khôi phục, cơ sở dữ liệu cũng sẽ bị hạ cấp xuống trạng thái trước đó. Bước xây dựng quản lý việc di chuyển db, cần một kịch bản 'lên' và 'xuống'. Chúng tôi đã phát hiện ra rằng quá trình di chuyển tập lệnh cũng hoạt động khi chỉ định cũ hơn Để di chuyển so với di chuyển Từ. Tuy nhiên, một trong những nên thiết lập Để di chuyển đến một TRƯỚC KHI di chuyển bạn thực sự muốn di chuyển. Ngoài ra, khi cố gắng tạo tập lệnh 'xuống' cho lần di chuyển mới nhất, bạn nên sử dụng 'ZZZZZZ' (hoặc tương tự) cho tham số Từ di chuyển. – Nullius

1

Bạn có thể sử dụng DotNet cli cốt lõi để tạo ra kịch bản

dotnet ef migrations script 

Ngoài ra bạn có thể đặt này để nộp với vỏ điện mới out-file lệnh.

dotnet ef migrations script | out-file ./script.sql 
Các vấn đề liên quan