Как изменить стратегию генерации кода по умолчанию для edmx?
Я хочу изменить стратегию генерации кода по умолчанию, как я могу это сделать?
Я просто хочу изменить имя класса из <#=code.Escape(container)#>
до Entities
и измените строку подключения по умолчанию на name=Default
.
(Я не хочу создавать файл шаблона для проекта, Я хочу отредактировать его, чтобы он работал глобально)
Я искал .tt
файлы, я мог найти только ItemTemplates. Я не знаю, что генерирует код по умолчанию, это я хотите отредактировать.
Update: я все еще не знаю, как это сделать.
2 ответов
вы можете увидеть, что генерирует код, если щелкнуть файл EMDX и проверить свойства файла в Visual Studio. Ищите Custom Tool
свойство, которое сообщит вам имя класса генератора, который преобразует EDMX XML в компилируемый код.
но что касается настройки модели, я все равно предлагаю вам использовать T4, который принимает ваш EDMX и генерирует тот же код, что и оригинальный генератор. Хорошо, что ты можешь манипулировать им, пока не упадешь замертво, если ... будет.
и если вы собираетесь использовать T4 на нескольких EMDXs в своем проекте, я предлагаю вам создать .ttinclude
файл и ссылаться на него в каждом . Таким образом, вы будете повторно использовать существующий код, и когда вы его измените, он будет отражен на всех сгенерированных файлах.
еще один вопрос: что значит ? Глобально для всех файлов edmx в ваш проект или для всех файлов edmx на вашу машину или все файлы edmx на своем проектная группа или что? Определить .
дополнительное редактирование
Так как вы определили глобальные как и все проекты на конкретной машине, это то, что я бы сделал.
прежде всего: использование T4 позволяет настроить EDMX -> изменения преобразования кода на проект или лучше сказать на решение (все проекты в конкретном решении). В других проектах / решениях на том же компьютере следует включить ту же ссылку на шаблон T4. Так это не совсем!--12-->глобальные в вашем понимании...
лучшее, что вы можете сделать, это создать пользовательский шаблон элемента Visual Studio с этим шаблоном T4, чтобы было намного проще добавить этот шаблон T4 по умолчанию в ваши решения/проекты. Это так глобально, как вы можете сделать это T4.
возможно, вы должны прочитать эту запись MSDN, которая говорит о вашем виде настройки:
как настроить генерацию кода объектного уровня (модель данных сущности Дизайнер)
Я не знаю, возможно ли даже изменить генерацию кода по умолчанию.
вместо того, чтобы пытаться изменить генерацию кода по умолчанию, я полагаю, вы могли бы создать .tt
который генерирует производный класс из ObjectContext
. Таким образом, вы можете назвать его и реализовать конструктор по умолчанию, как вы хотите.
что-то типа:
<#=Accessibility.ForType(container)#> partial class Entities : <#=code.Escape(container)#>
{
public Entities()
: base("name=Default")
{ }
}
недостатком этого подхода является то, что вам нужно будет развернуть это .tt
файл с каждым EDMX вы создавать.
однако с архитектурой добавления Visual Studio вы можете изучить создание шаблона, который создает EDMX и это по умолчанию. В качестве замены для добавления равнины "ADO.NET модель данных сущности"
заглядывая в EntityModelCodeGenerator
(пользовательский инструмент, который запускается стратегией codegen по умолчанию), кажется, что он зарегистрирован в SingleFileGenerator
механизм расширяемости, который является com-компонентом. Некоторые Подробнее здесь.