Добавление пользовательского шаблона t4 в раскрывающийся список шаблонов генерации DDL

Я знаю, что могу добавить шаблон в папку

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen

чтобы сделать его видимым в раскрывающемся списке шаблонов генерации DDL, но затем мне нужно распространить шаблон среди членов моей команды, чтобы они могли добавить шаблон в ту же папку.

Я надеялся, что смогу добиться того же результата, каким-то образом добавив шаблон в решение VS 2012 и сделав его видимым в том же раскрывающемся списке.

Вы знаете способ добиться этого? Я использую VS 2012 и для создания базы данных использую подход Model First.


person OKB    schedule 22.02.2013    source источник


Ответы (2)


Я поигрался с этим сегодня вечером и обнаружил, что это возможно, но это своего рода хак. Вам придется отредактировать файл 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" />
person pjs    schedule 18.09.2013
comment
Value="SSDLToSQLite3.tt" /> относится к корневому каталогу проекта. Поэтому поместите его в корень или установите другой путь, например. Value=".\Entities\SSDLToSQLite3.tt" />. Кстати, спасибо и +1 :-). - person Michał Powaga; 08.01.2014

В итоге я создал собственный шаблон для создания полей datetime2. Хотя мне не удалось отобразить шаблон в раскрывающемся списке в окне свойств, я смог добавить шаблон в ту же папку, что и мой .edmx, включить его в решение, а затем ввести имя файла шаблона непосредственно в поле свойств дизайнера, заменяющее значение по умолчанию. Похоже, что значение сохраняется после создания баз данных и сущностей, мне не нужно было напрямую редактировать XML-код edmx, и теперь мой собственный шаблон контролируется исходным кодом прямо рядом с тем, где он используется.

person TeamBrett    schedule 21.11.2013