0

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

最新发布的 T4 模板(POCO、Self Tracking 等),包括 VS2012 中的默认类型生成,都在没有“.designer”后缀的情况下自行生成“Xxxx.cs”。

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

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

有没有我遗漏的东西,我们现在应该将发出的部分类保留原样,或者这仅仅是一个疏忽,你们中的大多数人还必须重命名正在发出的源文件吗?

4

1 回答 1

0

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

  1. 右键单击设计器表面并选择属性
  2. 将“代码生成策略”从“无”更改为“默认”
  3. 从您的解决方案中删除 .tt 文件以避免同时具有上下文和重复实体。
于 2012-12-07T18:57:36.440 回答