如何:自定义对象层代码生成(实体数据模型设计器)

本主题描述如何使用 ADO.NET 实体数据模型设计器(实体设计器)和文本模板自定义对象上下文和实体类(对象层代码)的生成。

默认情况下,实体设计器使用 EntityModelCodeGenerator 自定义工具生成对象层代码(有关更多信息,请参见生成的代码概述(实体数据模型设计器))。 向项目添加文本模板时,实体设计器可以使用该模板生成对象层代码,而不使用默认的自定义工具。

Dd456821.note(zh-cn,VS.100).gif注意:
您可以搭配使用命令行工具和文本模板生成对象层代码。有关更多信息,请参见文本模板的命令行工具(可能为英文网页)。

Visual Studio 提供两个用于生成实体框架对象层代码的 ADO.NET 模板:“ADO.NET EntityObject 生成器”“ADO.NET 自跟踪实体生成器”。 **“ADO.NET EntityObject 生成器”**生成的代码与 EntityModelCodeGenerator 自定义工具生成的代码相同。 **“ADO.NET 自跟踪实体生成器”**模板生成包含自跟踪状态逻辑的实体类。 使用 N 层应用程序时使用自跟踪实体。 有关 ADO.NET 模板的更多信息,请参见 ADO.NET EntityObject 生成器模板ADO.NET 自跟踪实体生成器模板

以下过程假定:

  • 您在 Visual Studio 2010 中打开了面向 .NET Framework 4 的 Visual Basic 或 C# 项目。

  • 您使用实体设计器打开了 .edmx 文件。

  • 您熟悉如何自定义文本模板。 有关文本模板的信息,请参见生成项目(可能为英文网页)。

自定义对象层代码生成

  1. 右击实体设计器图面的空白区域,指向**“添加代码生成项”,然后选择可用的模板。 如果没有显示任何可用的模板,则在“已安装的模板”窗格中选择“代码”**。

    代码生成项将向项目添加一个或多个文本模板 (.tt) 文件。 文本模板将生成对象层代码。 在 .tt 文件下添加生成的文件。 如果不修改此模板,生成的代码将与实体设计器生成的代码相同。

    向项目添加文本模板时,Visual Studio 执行以下操作:

    • 将概念模型的**“代码生成策略”属性设置为“无”**。 这将关闭默认代码生成。

    • 在 .edmx 文件所在的目录中向项目添加新文本模板文件。

    • 将相对于文本模板的 .edmx 文件路径插入到文本模板。 这样做的目的是为了确保该文本模板处理的是正确的 .edmx 文件。

    • 基于 .edmx 文件使用文本模板生成代码。 生成的代码将写入 <text_template_name>.cs<text_template_name>.vb 文件中。 此代码文件将作为该模板文件的依赖文件添加在**“解决方案资源管理器”**中。

  2. 打开文本模板并进行编辑。

  3. 保存编辑后的文本模板文件。

    在保存该文本模板文件时,会根据编辑后的文本模板文件重新生成对象层代码。

默认情况下,只要保存 .edmx 文件,就会触发 .edmx 文件的对象层代码生成操作。 不保留对 <text_template_name>.cs<text_template_name>.vb 代码文件所做的任何手动更改。 如果一个 .edmx 文件有多个文本模板文件与其关联,则保存 .edmx 文件时会重新生成所有关联的代码文件。 但是,可以更改这种行为。 如果将概念模型的**“保存时转换相关的文本模板”**属性设置为 false,保存文件时将不会重新生成代码文件。

在将模型和 .tt 文件拆分成单独的项目时,只要修改了 .edmx 文件或 .tt 文件就应手动运行代码生成。 通过单击解决方案资源管理器中的**“转换所有模板”**按钮可执行此操作。 Walkthrough: Serialize Self-Tracking Entities主题演示如何将模型和 .tt 文件拆分成单独的项目。

另请参见

概念

.edmx 文件概述(实体框架)

其他资源

ADO.NET 实体数据模型工具