3
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; }

}
4

2 回答 2

6

尽管发布了针对entityframework.codeplex.com/workitem/446的修复程序,但在使用VS Power Tools Beta 4时,我也无法解决您的 tt 单数化以“s”结尾的单词的问题,并且我确实确认我是正确的EF 版本 - 6.1.1。

我的解决方案是使用EntityFramework Reverse POCO Code First Generator,它是一个很棒的工具!!如果您能够从新的 tt 重新开始,我强烈建议您基于超级灵活且易于使用。源代码在这里

观看 Simon Hughes视频,了解入门的深入(30 分钟)概述。我不删除尾随's'的快速解决方案是:

  • (确保已安装 EF)
  • 更新 app.config 连接字符串名称 = MyDbContext
  • “添加新项目”到项目
  • 从“在线”部分选择“EntityFramework Reverse POCO Generator”模板(除非您已经从上面提供的链接安装它)并保存为“Database.tt”
  • 打开 Database.tt 文件并在第 36 行添加所需的每个(“单数”、“复数”)覆盖,如下所示:
// 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 西蒙·休斯
于 2014-12-12T14:59:18.017 回答
4

认为我会提供更新的答案而不是评论。

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

好吧,正如另一个人建议的那样。使用反向 POCO 生成器

第 61 行(2016 年 8 月)

注释掉这一行:

Inflector.PluralizationService = new EnglishPluralizationService();

取消注释这一行:

Inflector.PluralizationService = null;

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

但是,如果您想要对每个表、视图等进行完整控制... OP 答案将为您工作。

于 2016-08-11T23:19:05.850 回答