【问题标题】:MVC EDMX Codebehind is using ObjectContext vs DBContextMVC EDMX Codebehind 使用 ObjectContext 与 DBContext
【发布时间】:2012-05-02 14:16:48
【问题描述】:

我是 EF 的新手。我的模型有一个单独的项目。我安装了 EF 4.3.1.0。我看到 Context 的基类是 ObjectContext 而不是 DbContext。当我在前端项目中搭建我的控制器时,这会成为一个问题,在编辑操作中它会调用

context.Entry(status).State = EntityState.Modified; 

但条目未知。我发现Entry 是新的DbContext。

如何让生成的代码生成正确的东西?

这是一个 DB First 项目

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案1】:

    您必须在 Visual Studio 中将 EF 4.x DbContext Generator 应用于您的 EDMX 模型。您可以从 Visual Studio 扩展管理器安装生成器模板。

    安装模板后,请按照本文第 4 点中的步骤操作:

    http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

    (将帖子中的“ADO.NET DbContext Generator”替换为已安装的“EF 4.x DbContext Generator”,这是 EF 4.3.1 的最新和重命名版本)

    模板将从您的 EDMX 模型生成 POCO 类和派生的 DbContext

    【讨论】:

    • 我已尝试按照您的概述进行操作。我发现虽然新上下文是基于 DbContext 创建的,但上下文的旧定义仍然保留在 edmx 代码隐藏设计器.cs 文件中。结果,我所有的对象/表在我编译时都出现了重新定义的错误。
    • @Jeff:这很奇怪。当您从 EDMX 设计器界面使用“添加代码生成项...”时,实际上应该清空 Designer.cs 文件(自动生成的注释除外)。您是否在同一个项目/程序集中拥有所有内容?也许问一个关于这个问题的新问题,我不知道这个烂摊子是怎么发生的。
    • 我的模型在一个单独的项目中。
    【解决方案2】:

    请查看这篇文章“Using DbContext To Query Model-First/Database-First EDMX Models”,这将允许您继续使用现有代码而无需进行任何更改。

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      相关资源
      最近更新 更多