Шаблон T4 POCO — удаление автоматически сгенерированного файла .cs в файле .tt

Я изменяю шаблон «Генератор сущностей ADO.NET POCO», чтобы создать свои собственные классы POCO. Мой файл .tt для моей модели называется Model1.tt. Когда вы развернете Model1.tt, вы увидите файл с именем Model1.cs, который содержит некоторый автоматически сгенерированный код «Fixup»:

public class FixupCollection<T> : ObservableCollection<T>
{
    //Auto-generated code here
}

Мне не нужен этот файл Model1.cs. Можно ли изменить файл Model1.tt, чтобы он вообще не создавал файл Model1.cs?


person thd    schedule 16.11.2010    source источник


Ответы (3)


Не знаю, как полностью удалить файл, но чтобы удалить класс FixupCollection, вы можете просто удалить или закомментировать WriteCustomObservableCollection();. Обратите внимание, что вам также придется изменить часть шаблона, которая генерирует FixupCollections для ваших свойств навигации POCO.

person Yakimych    schedule 17.11.2010
comment
Да - это то, что я в итоге сделал. - person thd; 18.11.2010

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

person AVH    schedule 27.01.2011
comment
Я также использовал этот хак после того, как перепробовал все остальные... Тем не менее я думаю, что есть что-то, что я могу сделать, чтобы избежать этого. - person Mr_Hmp; 04.01.2015

Файлы создаются с помощью EntityFrameworkTemplateFileManager. В строке № 26 файла tt для типов вы увидите, что он инициализируется:

EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);

Вы увидите везде, где он используется только для поиска «fileManager» в файле.

person Steve Michelotti    schedule 18.11.2010
comment
Если вы закомментируете файловый менеджер в файле Model1.tt, вы получите несколько ошибок и не получите никакого объекта. - person thd; 18.11.2010
comment
Я не получаю файл Model1.cs, сгенерированный при запуске шаблона - только сгенерированные файлы предназначены для реальных объектов. Я предполагаю, что этот файл создается из-за настройки, которую вы сделали в шаблоне. - person Steve Michelotti; 18.11.2010
comment
Хммм... Я начал снова. 1) я добавил модель данных объекта ADO.NET (стратегия генерации кода = нет); 2) добавлен пункт "Добавить элемент генерации кода"...; 3) добавлен генератор сущностей ADO.NET POCO; 4) закомментировал "fileManager" в Model1.tt; 5) удалил все файлы .cs в Model1.tt, затем запустил шаблон Model1.tt. Результат: генерируется только Model1.cs. Файлы .cs для каждой сущности в моей модели не создаются. Однако Model1.cs содержит определения сущностей. - person thd; 19.11.2010