现在。 EDMX(TT转换,自定义工具,等等)正在生成BOTH DbContext类(在Model.tt/Model.Context.tt文件下)和 ObjectContext类(通过Model.designer)。 cs文件)。见下图:
一切都很好并且可以使用DbContext(但显然只有在构建之前删除了Designer.cs文件),但Designer.cs - 及其基于ObjectContext的代码 - 仍然会重新出现。如何阻止此行为?!
答案 0 :(得分:7)
我没有找到如何停止生成ObjectContext的Designer.cs文件,但我确实弄清楚如何使它无关紧要。只需将Build Action设置为“None”而不是“Compile”。
答案 1 :(得分:3)
.tt
文件将生成代码,无论.edmx
中的代码生成策略如何。他们听取.edmx
文件更改。至少这是他们为我工作的方式。
通过将代码生成策略转换为None
中的.edmx
,您可以使.designer.cs
文件中没有任何有用的内容。
然后打开项目文件,找到代表.edmx
的节点,默认情况下它包含在EntityDeploy
节点中,即Build Action值,并删除其Generator
子项。< / p>
答案 2 :(得分:1)
在正常的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.
答案 3 :(得分:0)
我认为问题是EntityModelCodeGenerator
文件属性的Custom Tool
字段中包含.edmx
值。只需删除该值即可。
我认为就是这样,因为我注意到在我作为EF6项目开始的项目中,没有任何价值且没有.designer.cs
文件,但在我从EF4升级的两个文件中,他们都有价值和设计师档案。
(这相当于基础<Generator>
文件中的.csproj
标记。)