Сначала измените имя созданного файла контекста с помощью кода обратного инженера 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 - с открытым исходным кодом - взять код, добавить эту опцию конфигурации и отправить обратно запрос на извлечение.