【问题标题】:Unable to Add Controller无法添加控制器
【发布时间】:2014-06-27 10:45:01
【问题描述】:

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

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

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<EmpDetails> Employee { get; set; }
    }

当我尝试添加控制器时,出现以下错误。

请为这个问题提出一些解决方案。它出了什么问题..

这是我添加控制器的过程

【问题讨论】:

  • 你是如何尝试添加控制器的?
  • @ArijitMukherjee:我已经用 2 张图片更新了我的帖子.. 请看一下..
  • 不支持 ASP.NET MVC 4 脚手架不支持 Entity Framework 6 或更高版本
  • 我认为这是由于 DBContext 和 ObjectContext 导致的模型绑定
  • 忽略 sfolling 错误信息一目了然

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4


【解决方案1】:

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

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

ObjectContext 之类的类型以前在 System.Data.Entity.dll 已移至新的命名空间。这表示 您可能需要更新您的 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,它针对的是早期版本的实体框架。脚手架将采用旧的命名空间。

您可以尝试升级到最新版本的 MVC,您的脚手架将再次工作。要么降级 EF6(我不推荐这样做,它有很多非常棒的功能)。第三种选择是每次手动修复脚手架代码。

【讨论】:

    【解决方案2】:

    使用 ASP.Net MVC 3/4 时,实体框架程序集 (.dll) 将自动被较低版本 (5.0.0.0) 引用。当您将其更新到更高版本时,需要显式类型转换,您会收到此错误。解决此问题的一种方法是,使用现有版本的 Entity Framework (5.0.0.0) 而不更新到更高版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多