Trước tiên, tôi đã đọc những câu hỏi/câu trả lời:Không thể chạy EF5 di chuyển với cơ sở dữ liệu hiện có
- EF-migration message
- How can I stop Add-Migration checking my database has no pending migrations when using Code-Based migrations?
- Make EF4.3 Code First Migrations ignore pending migrations
Những tất cả dường như được cho EF các phiên bản trước EF5 và tình hình của tôi dường như không phù hợp với những câu trả lời này. Vì vậy, hãy để tôi mô tả tình hình của tôi.
- Ứng dụng của tôi ban đầu được tạo bằng EF4, trước tiên. Tôi đã thiết kế cơ sở dữ liệu của mình với trình thiết kế GUI và sử dụng nó để tạo cơ sở dữ liệu của tôi.
- Tôi đã chạy và thu thập dữ liệu vào cơ sở dữ liệu trong một vài tháng. Tôi thực sự không thể mất dữ liệu này.
- Tôi phân nhánh mã, cài đặt EF5 với NuGet và sử dụng Công cụ điện EF để tạo mô hình của tôi từ cơ sở dữ liệu của tôi bằng cách nhấp chuột phải vào dự án thư viện lớp mới và chọn
Entity Framework | Reverse engineer code first
. - Tôi có thể tham khảo lại dự án mới của mình một cách suôn sẻ, chuyển đổi dự án của tôi để sử dụng DbContext mới thay vì ObjectContext và xóa thư viện lớp EF4 đã giữ mô hình cũ của tôi. Chương trình hoạt động tuyệt vời!
Bây giờ, tôi muốn thử tính năng di chuyển tự động mà tôi đã có một chút trải nghiệm với Ruby on Rails. Dưới đây là những gì tôi đã làm:
- Ran
Enable-Migrations
. Đã có một chút rắc rối do các chuỗi kết nối và app.config nào đã được sử dụng, nhưng cuối cùng đã nhận được nó. Tuy nhiên, this MSDN page nói rằng điều này sẽ tự động tạo ra lần di chuyển đầu tiên để đưa tôi đến điểm tôi đã có. Nó không. - Ran
Add-Migration InitialSchema
để thực hiện những gì không được thực hiện tự động trong bước 1. Điều này đã hiệu quả. - Thêm một tài sản để một trong những đối tượng mô hình của tôi, sau đó cố gắng chạy
Add-Migration AddSerialToLogEntries
, và đã được trình bày với:
Không thể để tạo ra một chuyển đổi rõ ràng vì di cư rõ ràng sau đang chờ giải quyết: [201307190100268_InitialSchema] . Áp dụng di chuyển rõ ràng đang chờ xử lý trước khi thử tạo một di chuyển rõ ràng mới .
Cố gắng áp dụng di chuyển trên cơ sở dữ liệu hiện tại của tôi không thành công, điều này không đáng ngạc nhiên.
Các câu trả lời khác tôi đã đề cập ở trên về cơ bản nói rằng tôi không may mắn, nhưng như tôi đã nói những câu hỏi đó dành cho các phiên bản cũ hơn của Khung thực thể. Tôi có lựa chọn nào ở đây không? Trong khi viết câu hỏi này, tôi nghĩ tôi có thể sử dụng SQL Server Management Studio để xuất dữ liệu của tôi sang tập lệnh SQL, xóa toàn bộ cơ sở dữ liệu, để EF tạo nó, sau đó chạy các tập lệnh để lấy lại dữ liệu của tôi ... Tôi sẽ cố gắng vào ngày mai khi tôi có thời gian, nhưng tôi muốn nghe nếu có những lựa chọn khác vì tôi không chắc chắn 100% sẽ hoạt động và sẽ ghét có bất kỳ lỗi nào trong dữ liệu được chèn vào trong tiến trình.
Câu trả lời tuyệt vời, chi tiết. Tôi sẽ thử các bước của bạn càng sớm càng tốt. Tôi biết tôi có thể "hoàn tác" cho phép di chuyển bằng cách xóa thư mục Migrations, nhưng tôi có thể đơn giản là xóa các phương thức Up và Down của di chuyển đầu tiên thay vì xóa nó và bắt đầu lại không? – Steve
@Steve: Vâng, điều đó cũng có tác dụng. – Slauma
Làm việc tuyệt vời, cảm ơn bạn! – Steve