Asp.net mvc MVC在引擎盖下吸烟吗?神秘实体重命名

Asp.net mvc MVC在引擎盖下吸烟吗?神秘实体重命名,asp.net-mvc,ef-code-first,Asp.net Mvc,Ef Code First,在我的模型中: public class ContractCategory { public int ContractCategoryID { get; set; } public int Name { get; set; } public ICollection<Charge> Charges { get; set; } public virtual ICollection<ContractParentI

在我的模型中:

public class ContractCategory
    {
        public int ContractCategoryID { get; set; }
        public int Name { get; set; }
        public ICollection<Charge> Charges { get; set; }
        public virtual ICollection<ContractParentItem> ContractParentItems { get; set; }
        public virtual ICollection<ContractChildItem> ContractChildItems { get; set; }
    }
合同类别

ies?

是的,合同类别的错售是故意的,我想符合附件“s”

MVC为什么要改变它

更新
我想这比我想象的要聪明!我认为多重化只发生在一个“s”的附属物上。

这里不是简单的,但是正确的合同类别多重化应该是合同类别,所以这就是为什么你会得到它

如果您真的希望这样拼写,EF允许您更改要保存到的表的名称


请参见此处的答案:

它将自动将表名的实体名复数

如果不希望出现这种行为,可以在
DbContext
子类中将其关闭:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder){
modelBuilder.Conventions.Remove();
}

或者显式地将其映射到表。使用注释或fluent API(
.ToTable(“categoris”)
)。

或者,如果可能,可以使用下划线。根据经验,带有下划线的实体不会被重命名,因此合同类别将成为合同类别。

不确定是否开玩笑,但这是类别的正确复数形式。多个类别是多个类别。(见第4项)不是开玩笑,我写的ContractCategoris是故意的,只是想附加一个看起来像是
ContractCategory
正确的复数形式的sts-你不想要复数形式吗?这个答案的可能副本不值得投反对票。这是正确的信息,基于最初的问题,不清楚OP是否理解正确的复数形式,或者“s”是否是故意的。我谦虚地不同意,因为我的笔记在提交答案之前。无论哪种方式,答案都应该在我澄清后删除@汤米我在看到你的澄清之前就把答案填进去了。记住,StackOverflow不会实时更新问题,因为我正在为您研究答案。请注意,我尽可能地礼貌,因此“不要在这里装模作样”开始了。@CubanX第1点好的..(对不起),第2点无效
CREATE TABLE [dbo].[ContractCategories] (
    [ContractCategoryID] [int] NOT NULL IDENTITY,
    [Name] [int] NOT NULL,
    CONSTRAINT [PK_dbo.ContractCategories] PRIMARY KEY ([ContractCategoryID])
)
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}