修改 Entity Framework 类型 T4 模板
Modifying Entity Framework Types T4 Template
我想修改 Entity Framework 6(模型优先)用于生成类型的 T4 模板,以便在所有实体 class 定义上注入 GeneratedCodeAttribute
。我希望在任何项目、任何解决方案中添加新的 ADO.NET 实体数据模型时都保留此功能 - 因此我需要对使用我的实体图生成的 T4 模板以外的其他内容进行更改。
EF6 专家可以告诉我如何去做吗?
这是我试过的方法(没有成功):我找到了一个名为 CSharpDbContext.Types.tt 的 T4 模板,其内容似乎与 T4 相同使用我的 .edmx 文件生成的模板。我假设此文件是 Visual Studio 添加新项目列表中显示的 EF 6.x DbContext 生成器。 CSharpDbContext.Types.tt在我电脑上的文件位置是:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp\Data33\DbCtxCSEF6
但是,当我修改此文件时,我得到的 class 定义与修改前完全相同。如果我将它移动到一个完全不同的位置,我会再次得到相同的结果。据我所知,此文件与我的特定于 edmx 的 T4 模板之间没有任何联系。
如果有人能对此有所说明,我们将不胜感激。
第 1 步:不要那样做。不要修改使用 EF 下载的模板,因为您将无法在 "clean" 计算机上轻松一致地复制它。
第 2 步:添加 EF DB-first 后,您可以在项目中编辑模板副本。此模板将存储在代码存储库中,您无需 "magical" 设置即可获得可重复的结果。缺点是每次创建新的 EF 上下文时都需要修改模板。
要修改模板打开 MyEFItem.tt,研究它的工作原理并根据需要进行编辑。在您的情况下,我会在该 .tt 中搜索 "partial class" 并在此之前的行中插入 [GeneratedCode]。保存后,您将在生成的 .cs 中看到更改,或者您可以右键单击 .tt 和 "Run Custom Tool"
我想修改 Entity Framework 6(模型优先)用于生成类型的 T4 模板,以便在所有实体 class 定义上注入 GeneratedCodeAttribute
。我希望在任何项目、任何解决方案中添加新的 ADO.NET 实体数据模型时都保留此功能 - 因此我需要对使用我的实体图生成的 T4 模板以外的其他内容进行更改。
EF6 专家可以告诉我如何去做吗?
这是我试过的方法(没有成功):我找到了一个名为 CSharpDbContext.Types.tt 的 T4 模板,其内容似乎与 T4 相同使用我的 .edmx 文件生成的模板。我假设此文件是 Visual Studio 添加新项目列表中显示的 EF 6.x DbContext 生成器。 CSharpDbContext.Types.tt在我电脑上的文件位置是:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp\Data33\DbCtxCSEF6
但是,当我修改此文件时,我得到的 class 定义与修改前完全相同。如果我将它移动到一个完全不同的位置,我会再次得到相同的结果。据我所知,此文件与我的特定于 edmx 的 T4 模板之间没有任何联系。
如果有人能对此有所说明,我们将不胜感激。
第 1 步:不要那样做。不要修改使用 EF 下载的模板,因为您将无法在 "clean" 计算机上轻松一致地复制它。
第 2 步:添加 EF DB-first 后,您可以在项目中编辑模板副本。此模板将存储在代码存储库中,您无需 "magical" 设置即可获得可重复的结果。缺点是每次创建新的 EF 上下文时都需要修改模板。
要修改模板打开 MyEFItem.tt,研究它的工作原理并根据需要进行编辑。在您的情况下,我会在该 .tt 中搜索 "partial class" 并在此之前的行中插入 [GeneratedCode]。保存后,您将在生成的 .cs 中看到更改,或者您可以右键单击 .tt 和 "Run Custom Tool"