我已经搜索过但无法找到这个问题的答案。目前我们的数据库用户表的前缀 - 例如tblUsers。我已更新 EF 模板以从生成的类名称中删除“tbl”。但是我仍然不知道如何更改输出文件名以匹配。
有可能吗,还是我在向月亮祈求?我正在 VS 2012 中使用 EF Power Tools Beta 3。任何帮助将不胜感激!
Patrick,您需要修改 EF Power Tools 使用的 T4 模板。当您想要使用所有映射创建代码优先时,而不是Reverse Engineer Code First
选项,选择Customize Reverse Engineer Template
。您应该获得三个文件:
- 上下文.tt
- 实体.tt
- 映射.tt
例如,在 Mapping.tt 中,有一行从 TableSet 读取 MetadataProperties,并提取表名称。该行看起来像这样:
var tableSet = efHost.TableSet;
var tableName = (string)tableSet.MetadataProperties["Table"].Value ?? tableSet.Name;
这是您需要进行更改并执行以下操作的地方:
var newTableName = tableName.Replace("tbl", String.Empty);
当然,您应该选择不同的策略并使用Substring
方法或正则表达式读取并删除前三个字符。之后你必须经过tt文件并在您想要使用的地方使用您的逻辑tableName
以及在哪里使用newTableName
多变的。您将在数据库中的表完成映射的地方保留 tableName,在您想要为 POCO 类和文件名使用该名称的地方保留 newTableName。
对其他两个文件重复此过程。欲了解更多信息,请查看 Rowan Miller 的博客article http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef-power-tools/。这应该能让您很好地了解如何继续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)