Как изменить стратегию генерации кода по умолчанию для 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-компонентом. Некоторые Подробнее здесь.