设计器代码生成模板Designer Code Generation Templates

使用 Entity Framework 设计器创建模型时,会自动生成类和派生上下文。 除默认代码生成之外,我们还提供了许多模板,可用于自定义生成的代码。 这些模板以 T4 文本模板的形式提供,可按需自定义模板。

默认生成的代码取决于创建模型的 Visual Studio 版本:

  • 在 Visual Studio 2012 和 2013 中创建的模型将生成简单的 POCO 实体类和派生的简化 DbContext 的上下文。
  • 在 Visual Studio 2010 中创建的模型将生成派生自 EntityObject 的实体类和派生自 ObjectContext 的上下文。

备注

建议在添加模型后切换到 DbContext 生成器模板。

此页介绍了可用的模板,并说明了如何将模板添加到模型。

可用模板Available Templates

以下模板由实体框架团队提供:

DbContext 生成器DbContext Generator

此模板将生成简单的 POCO 实体类和派生自使用 EF6 的 DbContext 的上下文。 除有需要使用以下列出的其他模板外,推荐使用此模板。 如果使用的是近期版本的 Visual Studio(Studio 2013 及更高版本),则它也是你默认获取的代码生成模板:创建新模型时,会默认使用此模板,并在你的 .edmx 文件下嵌套 T4 文件 (.tt)。

较旧版本的 Visual StudioOlder versions of Visual Studio

  • Visual Studio 2012: 要获取 EF 6.x DbContextGenerator 模板,需安装适用于 Visual Studio 的最新 Entity Framework Tools - 有关详细信息,请参阅获取实体框架页面 。
  • Visual Studio 2010: EF 6.x DbContextGenerator 模板不适用于 Visual Studio 2010 。

EF 5.x 的 DbContext 生成器DbContext Generator for EF 5.x

如果使用的是较旧版本的 EntityFramework NuGet 包(具有主要版本 5),则需使用 EF 5.x DbContext 生成器模板 。

如果使用的是 Visual Studio 2013 或 2012,则其中已安装该模板。

如果使用的是 Visual Studio 2010,添加模板时,则需选择“联机”选项卡,从 Visual Studio 库中下载模板 。 或者可直接从 Visual Studio 库提前安装模板。 因为模板包含在较新版本的 Visual Studio 中,因此只能将库上的版本安装在 Visual Studio 2010 中。

EF 4.x 的 DbContext 生成器DbContext Generator for EF 4.x

如果使用的是较旧版本的 EntityFramework NuGet 包(具有主要版本 4),则需使用 EF 4.x DbContext 生成器模板 。 添加模板时,可在“联机”选项卡中找到此模板,或可直接从 Visual Studio 库提前安装模板 。

EntityObject 生成器EntityObject Generator

此模板将生成从 EntityObject 派生的实体类和从 ObjectContext 派生的上下文。

备注

请考虑使用 DbContext 生成器

现推荐新应用程序使用 DbContext 生成器模板。 DbContext 生成器利用了更简单的 DbContext API。 EntityObject 生成器仍支持用于现有应用程序。

Visual Studio 2010、2012 和 2013

添加模板时,需选择“联机”选项卡,从 Visual Studio 库中下载模板 。 或可直接从 Visual Studio 库提前安装模板。

EF 5.x 的 EntityObject 生成器

如果使用的是 Visual Studio 2012 或 2013,添加模板时,则需选择“联机”选项卡,从 Visual Studio 库中下载模板 。 或可直接从 Visual Studio 库提前安装模板。 因为模板包含在 Visual Studio 2010 中,因此只能将库上的模板安装在 Visual Studio 2012 和 2013 中。

如果只需要生成 ObjectContext 代码,无需编辑模板,则可还原为 EntityObject 代码生成

如果使用的是 Visual Studio 2010,则其中已安装该模板。 如果在 Visual Studio 2010 中创建新模型,则默认使用此模板,但项目中不包含 .tt 文件。 若想自定义模板,则需将其添加到项目中。

自跟踪实体 (STE) 生成器Self-Tracking Entities (STE) Generator

此模板将生成自跟踪实体类和从 ObjectContext 派生的上下文。 在 EF 应用程序中,上下文负责跟踪实体中的更改。 但是,在 N 层方案中,上下文可能无法用于修改实体的层。 自跟踪实体有助于跟踪任意层中的更改。 有关详细信息,请参阅自跟踪实体

备注

不推荐使用 STE 模板

不再建议在新应用程序中使用 STE 模板,虽然该模板仍支持用于现有应用程序。 请查看断开连接的实体文章了解推荐用于 N 层方案的其他选项。

备注

没有 EF 6.x 版的 STE 模板。

备注

没有 Visual Studio 2013 版的 STE 模板。

Visual Studio 2012Visual Studio 2012

如果使用的是 Visual Studio 2012,添加模板时,则需选择“联机”选项卡,从 Visual Studio 库中下载模板 。 或可直接从 Visual Studio 库提前安装模板。 因为模板包含在 Visual Studio 2010 中,因此只能将库上的模板安装在 Visual Studio 2012 中。

Visual Studio 2010**Visual Studio 2010**

如果使用的是 Visual Studio 2010,则其中已安装该模板。

POCO 实体生成器POCO Entity Generator

此模板将生成 POCO 实体类和从 ObjectContext 派生的上下文

备注

请考虑使用 DbContext 生成器

现推荐使用 DbContext 生成器模板在新应用程序中生成 POCO 类。 DbContext 生成器利用了新的 DbContext API,且可生成更简单的 POCO 类。 POCO 实体生成器仍支持用于现有应用程序。

备注

没有EF 5.x 或 EF 6.x 版的 STE 模板。

备注

没有 Visual Studio 2013 版的 POCO 模板。

Visual Studio 2012 和 Visual Studio 2010Visual Studio 2012 & Visual Studio 2010

添加模板时,需选择“联机”选项卡,从 Visual Studio 库中下载模板 。 或可直接从 Visual Studio 库提前安装模板。

“网站”模板是什么What are the “Web Sites” Templates

“网站”模板(例如适用于 C# 网站的 EF 5.x DbContext 生成器)可用于通过“文件”->“新建”->“网站…”创建的网站项目 。这不同于通过“文件”->“新建”->项目…”创建的 Web 应用程序,后者使用的是标准模板 。 我们单独提供了这些模板,因为 Visual Studio 中的项模板系统需要这些模板。

使用模板Using a Template

若要开始使用代码生成模板,请右键单击 EF 设计器中设计界面上的空白区域,然后选择“添加代码生成项…” 。

添加代码生成项

如果已安装要使用的模板(或模板包含在 Visual Studio 中),则可从左侧菜单的“代码”或“数据”部分使用此模板 。

已安装

如果尚未安装模板,请选择左侧菜单中的“联机”并搜索所需模板 。

搜索

如果使用的是 Visual Studio 2012,则新的 .tt 文件将嵌套在 .edmx 文件下。*

备注

对于在 Visual Studio 2012 中创建的模型,需删除用于默认代码生成的模板,否则会生成重复的类和上下文。 默认文件是 .tt 和 .context.tt 。

VS2012 模板

如果使用的是 Visual Studio 2010,则 tt 文件会直接添加到项目中。

VS2010 模板