2

我已经搜索过,但无法找到这个问题的答案。目前我们的 Db 用户表的前缀 - 例如 tblUsers。我更新了 EF 模板以从生成的类名中删除“tbl”。但是我仍然无法弄清楚如何更改输出文件名以匹配。

有可能还是我要月亮?我在 VS 2012 中使用 EF Power Tools Beta 3。任何帮助将不胜感激!

4

1 回答 1

3

Patrick,您需要修改 EF Power Tools 使用的 T4 模板。当您想使用所有映射创建代码优先时Reverse Engineer Code First,请选择Customize Reverse Engineer Template. 你应该得到三个文件:

  1. 上下文.tt
  2. 实体.tt
  3. 映射.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 的博客文章。这应该给你一个很好的想法如何继续。

于 2013-03-12T09:57:42.460 回答