tôi sửa lỗi vấn đề này trong WinDbg và Nó gây ra bởi sự Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn.EntityFrameworkServices
phương pháp sau đây:
internal static bool IsValidContextType(Type contextType)
{
return (typeof(ObjectContext).IsAssignableFrom(contextType) || ((contextType.BaseType != null) && contextType.BaseType.FullName.Equals("System.Data.Entity.DbContext", StringComparison.OrdinalIgnoreCase)));
}
Phương pháp này được trả về false vì nó đang được truyền Type sai. Tôi không chắc chắn nơi họ đến từ, nhưng có nhiều DLL được tải bên trong VS có chứa các triển khai của kiểu ngữ cảnh, nhưng chỉ một trong số chúng được bắt nguồn từ DbContext - tất cả những cái khác có nguồn gốc từ System.Object. các assembly này không có trong thư mục '% localappdata% \ assembly' của tôi, do đó chúng được tạo tự động bởi một số công cụ và được nạp vào VS.
Lỗi được gây ra bởi thực tế là Microsoft.VisualStudio.Web.Mvc.Util.TypeHelper.GetType
chỉ bộ lọc theo Type.FullName. để tìm đúng Loại, nó cũng cần thiết để lọc theo IsValidContextType()
.
Ok, điều gì đó thực sự kỳ lạ đang diễn ra. Tôi có 2 lớp học một phần cho lớp dẫn xuất DbContext của tôi (phần lớn nó được tạo tự động bởi một kịch bản .tt và một số được tạo thủ công). khi tôi cố gắng thêm một bộ điều khiển, VS thêm các thuộc tính mới vào lớp một phần của tôi, sau đó nó xây dựng một phần của lớp một phần (chỉ phần hướng dẫn sử dụng, và nó không sử dụng lớp cơ sở). sau đó nó tải rằng DLL mà nó được xây dựng từ một nửa lớp mô hình vào bộ nhớ, sau đó nó không kiểm tra lớp cơ sở ở trên.
lạ.
dòng dưới cùng: thử xóa một phần các lớp trong ngữ cảnh mô hình của bạn, nếu bạn có.
tôi cũng gặp vấn đề tương tự. Đối với một số lý do bối cảnh dữ liệu được tạo tự động là một sai lầm .. mỗi lần. –