设计器代码生成模板

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

默认情况下生成的代码取决于在其中创建模型的 Visual Studio 版本:

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

注释

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

本页介绍可用的模板,然后提供有关向模型添加模板的说明。

可用模板

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

DbContext 生成器

此模板将生成简单的 POCO 实体类,以及使用 EF6 从 DbContext 派生的上下文。 这是建议的模板,除非有理由使用下面列出的其他模板之一。 如果使用的是最新版本的 Visual Studio(Visual Studio 2013 及更高版本):默认情况下使用新模型时,将使用此模板,并且 T4 文件 (.tt) 嵌套在 .edmx 文件下。默认情况下,该模板也是你默认获取的代码生成模板。

旧版 Visual Studio

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

EF 5.x 的 DbContext 生成器

如果使用较旧版本的 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 生成器

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

EntityObject 生成器

此模板将生成派生自 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 实体类和派生自 ObjectContext 的上下文。 在 EF 应用程序中,上下文负责跟踪实体中的更改。 但是,在 N 层架构中,可能无法在修改实体的那一层上获取上下文。 自我追踪实体有助于追踪任意层的变化。 有关详细信息,请参阅 Self-Tracking 实体

注释

不建议使用 STE 模板

我们不再建议在新应用程序中使用 STE 模板,它将继续可用于支持现有应用程序。 有关我们推荐用于 N 层方案的其他选项,请访问 断开连接实体的文章

注释

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

注释

没有 Visual Studio 2013 版本的 STE 模板。

Visual Studio 2012

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

Visual Studio 2010**

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

POCO 实体生成器

此模板将生成 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 2010

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

什么是“网站”模板

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

使用模板

若要开始使用代码生成模板,请右键单击 EF 设计器中设计图面上的空位置,然后选择“ 添加代码生成项...”

添加代码生成项

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

已安装的模板

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

搜索模板  

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

注释

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

VS2012 模板

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

VS2010 模板