Сначала измените имя созданного файла контекста с помощью кода обратного инженера EF PowerTools

Я пытался выяснить, как сделать так, чтобы EF Power Tools - Reverse Engineer Code сначала использовал другое имя для сгенерированного Context-файла, чем то, которое он использует сейчас.

пример

У меня есть база данных под названием My_Awesome_Dev_Database. Когда я запускаю Reverse-engineer против этого, генерируемый файл будет называться:

My_Awesome_Dev_DatabaseContext.cs

То, что он хотел бы сделать, это указать, как должен называться файл, например:

MyAwesomeDatabaseContext.cs

Попытки пока

Я попытался просмотреть файл EF.Utilities.CS.ttinclude, чтобы выяснить, как генерируется имя файла, но до сих пор у меня не получилось.

Кто-нибудь знает?

Заранее спасибо!

1 ответ

Решение

В настоящее время сгенерированное соглашение о присвоении имен контекстным файлам жестко запрограммировано и не настраивается.

Вся логика внутри ReverseEngineerCodeFirstHandler класс ( источник на CodePlex).

Он устанавливает имя файла контекста и путь с

var contextFilePath = Path.Combine(modelsDirectory, 
     modelGenerator.EntityContainer.Name + contextHost.FileExtension);
var contextItem = project.AddNewFile(contextFilePath, contextContents);

Таким образом, имя файла исходит от modelGenerator.EntityContainer.Name который создается верхним в методе с:

var contextName = 
    connection.Database.Replace(" ", string.Empty)
                       .Replace(".", string.Empty) + "Context";
var modelGenerator = 
    new EntityModelSchemaGenerator(storeGenerator.EntityContainer, 
        "DefaultNamespace", contextName);

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

Вы можете открыть проблему или - потому что Entity Framework - с открытым исходным кодом - взять код, добавить эту опцию конфигурации и отправить обратно запрос на извлечение.

Другие вопросы по тегам