8

Gần đây tôi đã nâng cấp một dự án WFC sử dụng Khuôn khổ thực thể từ v4.3.1 đến 5.0.
Tôi chỉ đang chạy các di chuyển được mã hóa (không có di chuyển tự động).Xuất bản hộp thoại Web không phát hiện bối cảnh khung pháp nhân 5 của tôi là Mã số

Trước đây, tôi đã sử dụng Hồ sơ xuất bản để triển khai giải pháp này và áp dụng di chuyển. Kể từ khi nâng cấp dự án lên EF5, phần di chuyển không còn hoạt động nữa và hộp thoại xuất bản không phát hiện ngữ cảnh khi có di chuyển mã đầu tiên.

Cụ thể, tệp .pubxml đã thay đổi từ việc phát hiện ngữ cảnh của tôi thành <Object Type="DbCodeFirst"> thành <Object type="DbDacFx"> không đúng cho ngữ cảnh của tôi.

Để giải quyết sự cố này, tôi đã thêm cấu hình khởi tạo cơ sở dữ liệu <entityFramework> vào các biến đổi web.config của mình, nhưng tôi muốn hiểu tại sao hồ sơ xuất bản không hoạt động. Đó là một giải pháp đẹp hơn nhiều.

+0

Hãy xem [this] (http://stackoverflow.com/questions/16543229/publish-entity-framework-code-first-migrations-with-no-context-in-the-startup-pr/16558527 # 16558527) đăng bài. Có lẽ nó có thể giúp bạn ... – Liel

Trả lời

0

Bạn có thể đã bỏ lỡ việc thêm tham chiếu vào EntityFramework vào dự án của mình. Bằng cách thêm tham chiếu, bạn sẽ có thể kiểm soát xem tùy chọn DbCodeFirst có sẵn hay không.

0

this post suggests, hãy thử sử dụng tên đủ điều kiện của DbContext của bạn làm tên của chuỗi kết nối. Thay vì:

Web.config

<connectionStrings> <add name="MyContext" .../> </connectionStrings>

Sử dụng:

Web.config

<connectionStrings> <add name="MyNamespace.AnotherNamespace.MyContext" .../> </connectionStrings>

Trong trường hợp của tôi, để sử dụng của tôi publi hiện có sh profile (.pubxml), tôi cũng phải chỉnh sửa bằng tay <ObjectGroup Name="..." ...>. Có thể tái tạo các hồ sơ xuất bản cũng sẽ hoạt động.

0

Tôi gặp vấn đề tương tự nhưng không có cùng ngữ cảnh.

Tôi đã sử dụng Code First Migrations với ứng dụng ASP.NET MVC 5.2.3 hiện có sử dụng EF 6.1.3 cho một tháng không có vấn đề. Tại một thời điểm, tôi đã thêm hỗ trợ cho Windows Azure Storage nhưng tôi đã mắc một số lỗi:

  • Tôi đã thêm một dự án mới. Rất tiếc, tôi đã chọn "Ứng dụng giao diện điều khiển" thay vì "Thư viện lớp". Tôi đã cố gắng sửa chữa nó bằng cách thay đổi nó trở lại "Class Library" trong "Project Settings"
  • Tôi đã sử dụng Nuget đến Install-Package WindowsAzure.Storage nhưng tôi đã cài đặt nó trên dự án MVC chứ không phải trên thư viện lớp. Tôi cố gắng để sửa chữa nó bằng cách làm Uninstall-Package về dự án MVC và cài đặt nó vào dự án đúng
  • tôi gọi là lớp trong thư viện lớp "WorkOrderStorage"
  • tôi thêm connectionString để <connectionStrings> phần tử trong web.config và chuyển đổi trong web.release.config

Tôi đoán dự án của tôi hiện đang ở trạng thái không ổn định. Tôi nhận thấy rằng nó sẽ quên về Code First Migrations (Tôi đã theo dõi những thay đổi đối với.tập tin pubxml):

  1. khi tôi đặt một tham chiếu giữa các dự án MVC và thư viện chứa lớp WorkOrderStorage
  2. khi tôi tạo ra một lớp trống 'WorkOrderStorage' tại một trong những thư viện hiện có

Cuối cùng tôi đã sửa nó bằng cách tái tạo thư viện này một cách chính xác từ đầu như một thư viện lớp (vì quan sát 1). Tôi cũng đặt tên lớp là WorkOrderRepository (vì quan sát 2).

2

Nó đã từng xảy ra với tôi khi hợp nhất cam kết của nhà phát triển khác và kích hoạt tải lại dự án Visual Studio. Đó là cách nó gây ra sự thay đổi "DbCodeFirst" thành "DbDacFx".

Nếu tôi khởi động lại Visual Studio thì mọi thứ sẽ trở lại trạng thái cần thiết.

Chỉ là một ý nghĩ khác.

+0

Thật tệ khi @josh không đánh dấu điều này là câu trả lời, ngoài việc bỏ phiếu, tôi chỉ có thể cung cấp cho bạn lòng biết ơn của tôi, điều này đã cứu ngày của tôi, theo nghĩa đen –