4

我一直在尝试弄清楚如何使 EF Power Tools - Reverse Engineer Code First对生成的 Context-file 使用不同的名称,而不是现在使用的名称。

例子

我有一个名为My_Awesome_Dev_Database的数据库。当我对此运行逆向工程时,生成的文件将被调用:

My_Awesome_Dev_DatabaseContext.cs

它想要做的是指定要调用的文件,例如:

MyAwesomeDatabaseContext.cs

迄今为止的尝试

我曾尝试查看 EF.Utilities.CS.ttinclude 文件,以找出文件名是如何生成的——但到目前为止我还没有成功。

有人知道吗 ?

提前致谢!

4

1 回答 1

5

当前,生成的上下文文件命名约定是硬编码且不可配置的。

所有逻辑都在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 是开源的 - 获取代码,添加此配置选项,然后发回拉取请求。

于 2013-10-11T21:02:22.290 回答