将自定义的t4模板添加到DDL生成模板下拉列表

5
我知道可以将模板添加到文件夹中:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen
以使其在DDL生成模板下拉列表中可见,但这样我需要将模板分发给我的团队成员,以便他们可以将模板添加到相同的文件夹中。
我希望能通过某种方式将模板添加到VS 2012解决方案中,并使其在相同的下拉列表中可见。
你知道如何实现吗? 我正在使用VS 2012,并使用Model First方法生成数据库。
2个回答

1
我今晚尝试了一下,发现这是可能的,但有点像黑客攻击。你必须手动编辑edmx文件,并确保它被版本控制,因为你必须编辑edmx文件的设计器部分(自动生成)。首先要将t4模板复制到项目的根目录(实际上可能必须与edmx位于同一文件夹中,不确定)。然后将t4模板添加到项目中。现在删除自定义工具条目(在属性中),以便它不尝试自动生成t4模板。最后,在edmx文件的正确位置添加下面的设计器属性(我包括了上下文以找到正确的位置):
  <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
    <edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
      <edmx:Options>
        <DesignerInfoPropertySet>
          <DesignerProperty Name="DDLGenerationTemplate" Value="SSDLToSQLite3.tt" />

Value="SSDLToSQLite3.tt" /> 是项目根目录相关的。因此,请将其放在根目录中或设置不同的路径,例如 Value=".\Entities\SSDLToSQLite3.tt" />。顺便说一句,谢谢并点赞 :-). - Michał Powaga

0

最终我创建了一个自定义模板来生成datetime2字段。虽然我无法让该模板显示在属性框的下拉菜单中,但我可以将模板添加到与我的.edmx文件相同的文件夹中,将其包含在解决方案中,然后直接在设计器的属性字段中键入模板文件名以替换默认值。在生成数据库和实体后,该值似乎被保留,我不需要直接编辑edmx XML,并且我的自定义模板现在与使用它的位置紧密关联并进行源代码控制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接