我想修改 Entity Framework 6(模型优先)用于生成类型的 T4 模板,以便在所有实体类定义中注入(inject) 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\Data\1033\DbCtxCSEF6
然而,当我修改这个文件时,我得到了与修改前完全相同的类定义。如果我将它移动到一个完全不同的位置,我会再次得到相同的结果。据我所知,此文件与我的特定于 edmx 的 T4 模板之间没有任何联系。
如果有人可以阐明这一点,我们将不胜感激。
最佳答案
第 1 步:不要那样做。不要修改使用 EF 下载的模板,因为您将无法在“干净”的机器上轻松且一致地复制它。
第 2 步:添加 EF DB-first 后,您可以在项目中编辑模板副本。该模板将存储在代码存储库中,您无需“神奇”设置即可获得可重复的结果。缺点是每次创建新的 EF 上下文时都需要修改模板。
要修改模板,请打开 MyEFItem.tt,研究它的工作原理并根据需要进行编辑。在您的情况下,我会在该 .tt 中搜索“部分类”,然后在此之前的行中插入 [GeneratedCode]。保存后,您将在生成的 .cs 中看到更改,或者您可以右键单击 .tt 和“运行自定义工具”
关于c# - 修改 Entity Framework 类型 T4 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420672/