【问题标题】:How do I stop Entity Framework from generating BOTH ObjectContext and dbContext如何阻止实体框架同时生成 ObjectContext 和 dbContext
【发布时间】:2023-03-07 15:27:01
【问题描述】:

背景

  • Visual Studio 2012
  • 在 VS2012 中创建的新 Model.EDMX 文件
  • 将之前创建的 EDMX 中的一些 EDMX xml 复制到新的 EDMX 中

问题/疑问

现在。 EDMX(TT 转换、自定义工具等)正在生成两个 DbContext 类(在 Model.tt/Model.Context.tt 文件下) ObjectContext 类(通过 Model.designer. cs 文件)。见下图:

一切都可以很好地构建并与 DbContext 一起使用(但显然只有在我在构建之前删除 Designer.cs 文件时),但 Designer.cs - 及其基于 ObjectContext 的代码 - 不断重新出现。我该如何阻止这种行为?!

【问题讨论】:

  • 您是否尝试过单击设计器表面并将代码生成策略更改为无?
  • 但我确实想生成代码...通过 Model.tt 和 Model.Context.tt 文件生成 DbContext 代码;我只是不想要 Model.Desiger.cs 中的老式 ObjectContext

标签: entity-framework dbcontext objectcontext


【解决方案1】:

我没有找到如何阻止 Designer.cs 文件生成 ObjectContext,但我确实知道了如何制作它以使其无关紧要。只需将 Build Action 设置为“None”而不是“Compile”即可。

【讨论】:

    【解决方案2】:

    无论.edmx 中的代码生成策略如何,.tt 文件都会生成代码。他们监听.edmx 文件的变化。至少这是他们为我工作的方式。

    因此,通过将.edmx 中的代码生成策略转换为None,您可以使.designer.cs 文件中没有任何有用的内容。

    然后打开工程文件,找到代表.edmx的节点,默认包含在EntityDeploy节点即Build Action值中,去掉其Generator子键。

    【讨论】:

      【解决方案3】:

      在普通的 EF Code First 项目中,代码生成策略为“无”且不会生成 ObjectContext。

      在您的情况下,您的代码生成策略设置为“默认”。

      要停止在xxxx.Designer.cs 中生成 ObjectContext,请转到您的 edmx 文件,并将您的代码生成策略从“默认”更改为“无”。

      如果你检查xxxx.Designer.cs

      // Default code generation is disabled for model 'C:\Users\xyxy\xyxyxy.Web\Models\xyxy.edmx'. 
      // To enable default code generation, change the value of the 'Code Generation Strategy' designer
      // property to an alternate value. This property is available in the Properties Window when the model is
      // open in the designer.
      

      【讨论】:

        【解决方案4】:

        我认为问题在于.edmx 文件属性的Custom Tool 字段中有EntityModelCodeGenerator 值。只需删除该值即可。

        我想就是这样,因为我注意到在我作为 EF6 项目开始的项目中,没有任何价值,也没有 .designer.cs 文件,但在我从 EF4 升级的两个项目中,它们都有值和设计器文件。

        (这相当于基础.csproj 文件中的<Generator> 标记。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-17
          • 2012-05-30
          • 1970-01-01
          • 2012-03-04
          • 1970-01-01
          • 2011-07-30
          • 1970-01-01
          相关资源
          最近更新 更多