如何阻止EF逆向工程师使用表名更改复数到单数?

时间:2013-08-01 06:34:15

标签: c# entity-framework entity-framework-4

CREATE TABLE [dbo].[ContentStatus](
    [ContentStatusId] [int] NOT NULL,
    [Status] [nvarchar](50) NOT NULL )

创建:

public partial class ContentStatu
{
    public ContentStatu()
    {
        this.Contents = new List<Content>();
    }

    public int ContentStatusId { get; set; }
    public string Status { get; set; }

}

2 个答案:

答案 0 :(得分:5)

我无法解决同样的问题。同时使用VS Power Tools Beta 4尽管已发布entityframework.codeplex.com/workitem/446的修正版,但我确认我使用的是EF - 6.1.1的正确版本。

我的解决方案是使用EntityFramework Reverse POCO Code First Generator,这是一个非常棒的工具!如果你能够重新开始使用新的tt,我强烈建议你选择超级灵活且易于使用。 Source Code Here

观看Simon Hughes video深入了解(30分钟)入门概述。我的快速解决方案是不删除尾随的&#39;是的:

  • (确保已安装EF)
  • 更新app.config连接字符串名称= MyDbContext
  • &#34;添加新项目&#34;投射
  • 选择&#34; EntityFramework反向POCO生成器&#34;来自&#34; Online&#34;的模板部分(除非您已经从上面提供的链接安装了它)并保存为&#34; Database.tt&#34;
  • 打开Database.tt文件,在第36行添加每个(&#34;单数&#34;,&#34;复数&#34;)覆盖,如下所示:
// Pluralization **********************************************************************************************************************
// To turn off pluralization, use:
//      Inflector.PluralizationService = null;
// Default pluralization, use:
//      Inflector.PluralizationService = new EnglishPluralizationService();
// For Spanish pluralization:
//      1. Intall the "EF6.Contrib" Nuget Package.
//      2. Add the following to the top of this file and adjust path, and remove the space between the angle bracket and # at the beginning and end.
//         < #@ assembly name="your full path to \EntityFramework.Contrib.dll" # >
//      3. Change the line below to: Inflector.PluralizationService = new SpanishPluralizationService();
Inflector.PluralizationService = new EnglishPluralizationService(new CustomPluralizationEntry[]
        {
            new CustomPluralizationEntry("CustomerStatus","CustomerStatus"),
            new CustomPluralizationEntry("EmployeeStatus","EmployeeStatus"),
        });
  • 保存文件和BOOM !!魔术发生了,如果你扩展Database.tt,你现在会看到Database.cs包含明确设置的单词的正确单数形式。 +1西蒙休斯

答案 1 :(得分:4)

想通知我会更新答案而不是评论。

  

如何停止EF逆向工程师使用表名将复数更改为单数?

正如对方建议的那样。使用反向POCO生成器

第61行(2016年8月)

注释掉这一行:

Inflector.PluralizationService = new EnglishPluralizationService();

取消注释这一行:

Inflector.PluralizationService = null;

现在不是采用名为 vwStatus 的视图,而是决定更改为 vwStatu ,它将执行1:1

但是,如果你想要每个表的完全控制,查看等... OP答案将适合你。