Где находится CodeGenerationTools

#entity-framework #t4

#entity-framework #т4 #t4

Вопрос:

В шаблонах entity framework T4 я могу использовать класс CodeGenerationTools.

Например:

 void WriteProperty(**CodeGenerationTools** code, EdmProperty edmProperty)
{
    WriteProperty(Accessibility.ForProperty(edmProperty),
                  code.Escape(edmProperty.TypeUsage),
                  code.Escape(edmProperty),
                  code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                  code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}
  

Однако я не могу найти, где определен этот класс.

Из какой сборки он взят? Каковы его члены?

Спасибо

Ответ №1:

Это не класс из assembly. Это включенный класс из другого шаблона:

 <#@ include file="EF.Utility.CS.ttinclude"#>
  

Эти файлы обычно хранятся в каталоге установки VS:

 %VSINSTALLDIR%Common7IDEExtensionsMicrosoftEntity Framework ToolsTemplatesIncludes
  

Комментарии:

1. Как вы думаете, насколько безопасно переносить класс в код? Я спрашиваю, потому что я пытаюсь сопоставить bool с Oracle NUMBER(1,0) без истинного подхода «сначала модель». Я использовал программу EDMX writer для разбора моего DbContext файла в xml и построения базы данных, а теперь использую fluent API для сопоставления с существующей таблицей… проблема заключается в приведенном выше странном отображении. Сначала он отлично работает с моделью, поэтому я пытаюсь выяснить, как я могу сделать это программно. Я думаю, что это преобразование TT, упомянутое выше.