无法添加控制器

我是MVC Web应用程序开发的新手。 我在添加模型和DbContext类后尝试添加控制器。

但是,当我尝试使用Entity框架的这个控制器时,它给了我一个错误

Unable to cast object of type 'System.Data.Entity.Core.Objects.ObjectContext' to 'System.Data.Objects.ObjectContext' 

我使用的是EF-6.1.1 (最新更新)

以下是我的模型和上下文类..

  public class EmpDetails { [Key] public int Id { get; set; } public string EmpId { get; set; } public string EmployeeName { get; set; } } public class ModelContext : DbContext { public DbSet Employee { get; set; } } 

当我试图添加一个控制器时,我得到以下错误。

在此处输入图像描述

请建议一些解决此问题的方法。 它出了什么问题..

这是我添加Controller的过程

在此处输入图像描述

在此处输入图像描述

entity framework在版本5和版本6之间带来了重大变化 。为了使它完全开源,它们将所有库移出带外,它们现在完全位于NuGet中的EntityFramework程序集中。 这样做的副作用是Entity Framework的许多名称空间发生了变化:

DbContext和Code First类型的命名空间没有更改。 这意味着对于许多使用EF 4.1或更高版本的应用程序,您无需进行任何更改。

先前在System.Data.Entity.dll中的ObjectContext类型已被移动到新的命名空间。 这意味着您可能需要更新您的using或Import指令以针对EF6进行构建。

命名空间更改的一般规则是System.Data。*中的任何类型都移动到System.Data.Entity.Core。*。 换句话说,只需插入Entity.Core。 在System.Data之后。 例如:

System.Data.EntityException => System.Data.Entity.Core.EntityException System.Data.Objects.ObjectContext => System.Data.Entity.Core.Objects.ObjectContext System.Data.Objects.DataClasses.RelationshipManager => System.Data .Entity.Core.Objects.DataClasses.RelationshipManager

您看到错误的原因是您使用的是以前版本的MVC,该版本的目标是早期版本的Entity Framework。 脚手架将采用旧的命名空间。

您可以尝试升级到最新版本的MVC,您的脚手架将再次运行。 无论是EF6还是降级(我不推荐这个,它有很多非常棒的function)。 第三种选择是每次手动修复脚手架代码。

使用ASP.Net MVC 3/4时,entity framework程序集(.dll)将使用较低版本(5.0.0.0)自动引用。 当您将此更新为更高版本时,您需要进行显式类型转换才能获得此错误。 解决此问题的一种方法是, 使用现有版本的Entity Framework(5.0.0.0)而不更新到更高版本