13

背景

  • 视觉工作室 2012
  • 在 VS2012 中创建的新 Model.EDMX 文件
  • 将之前创建的 EDMX 中的一些 EDMX xml 复制到新的

问题/问题

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

Model.tt 和 Designer.cs 文件都在定义我的实体

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

4

4 回答 4

8

我没有找到如何阻止 Designer.cs 文件生成 ObjectContext,但我确实知道如何制作它,这样它就无关紧要了。只需将构建操作设置为“无”而不是“编译”。

将构建操作设置为无

于 2012-10-25T18:17:20.250 回答
3

.tt无论.edmx. _ 他们监听.edmx文件的变化。至少这是他们为我工作的方式。

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

然后打开项目文件,找到代表 的节点.edmx,默认包含在EntityDeploy节点中,即 Build Action 值,并删除其Generator子键。

于 2013-03-13T06:55:46.050 回答
1

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

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

要停止在 中生成 ObjectContext xxxx.Designer.cs,请转到您的 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.
于 2013-06-14T11:39:48.423 回答
0

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

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

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

于 2015-12-22T20:58:26.587 回答