设计器代码生成模板
使用 Entity Framework 设计器创建模型时,会自动生成类和派生上下文。 除默认代码生成之外,我们还提供了许多模板,可用于自定义生成的代码。 这些模板以 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 Tools - 请参阅获取实体框架页以了解详细信息。
- 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 中。
- 适用于 C# 的 EF 5.x DbContext 生成器
- 适用于 C# 网站的 EF 5.x DbContext 生成器
- 适用于 VB.NET 的 EF 5.x DbContext 生成器
- 适用于 VB.NET 网站的 EF 5.x DbContext 生成器
EF 4.x 的 DbContext 生成器
如果使用的是较旧版本的 EntityFramework NuGet 包(具有主要版本 4),则需使用 EF 4.x DbContext 生成器模板。 添加模板时,可在“联机”选项卡中找到此模板,或可直接从 Visual Studio 库提前安装模板。
- 适用于 C# 的 EF 4.x DbContext 生成器
- 适用于 C# 网站的 EF 4.x DbContext 生成器
- 适用于 VB.NET 的 EF 4.x DbContext 生成器
- 适用于 VB.NET 网站的 EF 4.x DbContext 生成器
EntityObject 生成器
此模板将生成从 EntityObject 派生的实体类和从 ObjectContext 派生的上下文。
注意
请考虑使用 DbContext 生成器
现推荐新应用程序使用 DbContext 生成器模板。 DbContext 生成器利用了更简单的 DbContext API。 EntityObject 生成器仍支持用于现有应用程序。
Visual Studio 2010,2012 和 2013
添加模板时,需选择“联机”选项卡,从 Visual Studio 库中下载模板。 或者可直接从 Visual Studio 库提前安装模板。
- 适用于 C# 的 EF 6.x EntityObject 生成器
- 适用于 C# 网站的 EF 6.x EntityObject 生成器
- 适用于 VB.NET 的 EF 6.x EntityObject 生成器
- 适用于 VB.NET 网站的 EF 6.x EntityObject 生成器
EF 5.x 的 EntityObject 生成器
如果使用的是 Visual Studio 2012 或 2013,添加模板时,则需选择“联机”选项卡,从 Visual Studio 库中下载模板。 或者可直接从 Visual Studio 库提前安装模板。 因为模板包含在 Visual Studio 2010 中,因此只能将库上的模板安装在 Visual Studio 2012 和 2013 中。
- 适用于 C# 的 EF 5.x EntityObject 生成器
- 适用于 C# 网站的 EF 5.x EntityObject 生成器
- 适用于 VB.NET 的 EF 5.x EntityObject 生成器
- 适用于 VB.NET 网站的 EF 5.x EntityObject 生成器
如果只需要生成 ObjectContext 代码,无需编辑模板,则可还原为 EntityObject 代码生成。
如果使用的是 Visual Studio 2010,则其中已安装该模板。 如果在 Visual Studio 2010 中创建新模型,则默认使用此模板,但项目中不包含 .tt 文件。 若想自定义模板,则需将其添加到项目中。
自跟踪实体 (STE) 生成器
此模板将生成自跟踪实体类和从 ObjectContext 派生的上下文。 在 EF 应用程序中,上下文负责跟踪实体中的更改。 但是,在 N 层方案中,上下文可能无法用于修改实体的层。 自跟踪实体有助于跟踪任意层中的更改。 有关详细信息,请参阅自跟踪实体。
注意
不推荐使用 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 中。
- 适用于 C# 的 EF 5.x STE 生成器
- 适用于 C# 网站的 EF 5.x STE 生成器
- 适用于 VB.NET 的 EF 5.x STE 生成器
- 适用于 VB.NET 网站的 EF 5.x STE 生成器
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 4.x POCO 生成器
- 适用于 C# 网站的 EF 4.x POCO 生成器
- 适用于 VB.NET 的 EF 4.x POCO 生成器
- 适用于 VB.NET 网站的 EF 4.x POCO 生成器
“网站”模板是什么
“网站”模板(例如,适用于 C# 网站的 EF 5.x DbContext 生成器)用于通过“文件 -> 新建 -> 网站…”创建的网站项目。这不同于通过“文件 ->新建 ->项目…”创建的 Web 应用程序,后者使用标准模板。 我们单独提供了这些模板,因为 Visual Studio 中的项模板系统需要这些模板。
使用模板
若要开始使用代码生成模板,请右键单击 EF 设计器中设计界面上的空白区域,然后选择“添加代码生成项...”。
如果已安装要使用的模板(或模板包含在 Visual Studio 中),则可从左侧菜单的“代码”或“数据”部分使用此模板。
如果尚未安装模板,请选择左侧菜单中的“联机”并搜索所需模板。
如果使用的是 Visual Studio 2012,则新的 .tt 文件将嵌套在 .edmx 文件下。*
注意
对于在 Visual Studio 2012 中创建的模型,需删除用于默认代码生成的模板,否则会生成重复的类和上下文。 默认文件是 <model name>.tt 和 <model name>.context.tt。
如果使用的是 Visual Studio 2010,则 tt 文件会直接添加到项目中。