修改实体框架类型T4模板

时间:2015-04-02 19:12:22

标签: c# entity-framework templates visual-studio-2012

我想修改实体框架6(模型优先)用于生成类型的T4模板,以便在所有实体类定义上注入GeneratedCodeAttribute。我希望在任何项目中,在任何解决方案中添加新的ADO.NET实体数据模型时都会保留此功能 - 所以我需要在T4模板之外的其他内容中进行更改,这是通过我的实体图生成的。

EF6专家能否建议我如何做到这一点?

这就是我尝试过的(没有成功):我找到了一个名为CSharpDbContext.Types.tt的T4模板,其内容看起来与生成的T4模板相同我的.edmx文件。我假设这个文件是EF 6.x DbContext Generator,显示在Visual Studio Add New Item列表中。我的计算机上的CSharpDbContext.Types.tt的文件位置是:

C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Data \ 1033 \ DbCtxCSEF6

但是,当我修改此文件时,我得到的修改与修改前的类完全相同。如果我把它移到一个完全不同的位置,我会再次获得相同的结果。据我所知,此文件与我的edmx特定T4模板之间没有任何关联。

感谢有人能否对此有所了解。

1 个答案:

答案 0 :(得分:3)

第1步:不要这样做。不要修改使用EF下载的模板,因为您无法在" clean"上轻松一致地复制该模板。机。

步骤2:首先添加EF DB后,您可以在项目中编辑模板的副本。该模板将存储在代码存储库中,您将能够获得可重复的结果,而无需“魔法”和#34;建立。缺点是每次创建新的EF上下文时都需要修改模板。

要修改模板,请打开MyEFItem.tt,研究它的工作原理并根据需要进行编辑。在你的情况下,我会搜索" partial class"在.tt中并在此之前插入[GeneratedCode]。只要您保存,就会看到生成的.cs中的更改,或者您可以右键单击.tt和"运行自定义工具"