Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 实体框架:为什么模板不再生成“实体框架”;。designer.cs“;源文件_Visual Studio_Entity Framework_Visual Studio 2012_T4 - Fatal编程技术网

Visual studio 实体框架:为什么模板不再生成“实体框架”;。designer.cs“;源文件

Visual studio 实体框架:为什么模板不再生成“实体框架”;。designer.cs“;源文件,visual-studio,entity-framework,visual-studio-2012,t4,Visual Studio,Entity Framework,Visual Studio 2012,T4,Entity Framework 3.5/4.0中的默认类型生成会发出“Xxxx.designer.cs”源文件中的每个类型(其中“Xxxx”是正在生成的类型的名称)。这样,开发人员就可以生成自己的“Xxxx.cs”源文件,以便进一步实现,或者将属性添加到元数据类等 提供的最新T4模板(POCO、自跟踪等),包括VS2012中的默认类型生成,所有genrate“Xxxx.cs”本身都没有“.designer”后缀 我知道很容易覆盖T4模板的行为,在文件名中发出“.designer”,但我是否遗漏

Entity Framework 3.5/4.0中的默认类型生成会发出“Xxxx.designer.cs”源文件中的每个类型(其中“Xxxx”是正在生成的类型的名称)。这样,开发人员就可以生成自己的“Xxxx.cs”源文件,以便进一步实现,或者将属性添加到元数据类等

提供的最新T4模板(POCO、自跟踪等),包括VS2012中的默认类型生成,所有genrate“Xxxx.cs”本身都没有“.designer”后缀

我知道很容易覆盖T4模板的行为,在文件名中发出“.designer”,但我是否遗漏了一些事实,我们实际上不希望通过部分定义扩展这些类

在最近一个生成自跟踪实体的项目中,我发现必须重命名发出的文件,以便使用元数据类属性以及.Equals(object)和.GetHashcode()的重写来扩展定义(否则EF无法正确检测重复项)


我是否错过了我们现在希望保留发出的部分类的地方,或者这仅仅是一个疏忽,你们大多数人也必须重命名发出的源文件?

代码生成策略在VS2012中发生了变化。之前,生成的代码使用基于EntityObject的实体和从ObjectContext类派生的上下文类。默认情况下,VS2012生成POCO实体和DbContext定义的上下文。如果仍然需要基于ObjectContext的上下文和基于EntityObject的实体,则需要:

  • 在设计器曲面上单击鼠标右键,然后选择“属性”
  • 将“代码生成策略”从“无”更改为“默认”
  • 从解决方案中删除.tt文件,以避免同时存在上下文和重复实体

  • 我想你可能误解了这个问题。我不是在尝试恢复ObjectContext,我是在问为什么源文件命名策略已更改为不再包含“.designer”。是的,显然误解了这个问题。这些文件不再由设计器生成(注意代码生成策略设置为“无”),而是由调用T4模板处理的VS生成。T4 processor创建一个与正在处理的T4模板同名的文件。您可以尝试重命名T4文件-如果您这样做,您可能需要重命名edmx文件(我对此不确定)。进行此重命名并不是为了阻止扩展生成的类;这是我想说的最后一点。我知道我可以通过编辑T4模板来重命名生成的源文件(我已经多次这样做了)——我只是想知道我现在是否违背了规则。