【问题标题】:Models and EF are making them plural - hauler/haulers [duplicate]模型和 EF 正在使它们成为复数 - 搬运工/搬运工 [重复]
【发布时间】:2016-06-24 20:41:39
【问题描述】:

这在同一个项目中发生了两次。我正在使用 MVC/VS2015 社区,我正在添加 2 个类:搬运工和销售。

namespace CarThingy2.Models
{
    public class Sale
    {
            public int ID { get; set; }
            public int CoNbr { get; set; }
            public int Locn { get; set; }
            public int Ticket { get; set; }
            public int Haul_Code { get; set; }       
    }
}

所以我去保存 - 然后我添加了控制器,一切都很好,除了我将控制器“标题”(它被构建为“SalesController”)更改为 SaleController。运行该项目,它在“InnerException”中给了我一个关于“它找不到 dbo.Sales”的错误。我最终不得不启用迁移,添加迁移 addsomethingelse 然后最后更新数据库。 TWICE(一次用于搬运工,一次用于销售)!

我做错了什么,抓住了“复数”的名字吗?这以前发生在我身上,我最不想解释为什么。现在最奇怪的是该网站可以运行,但表格是复数的(搬运工和销售)。

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案1】:

    那么这些表最初称为“dbo.Sale”和“dbo.Hauler”吗?

    EF 默认约定是使用单数实体名称和复数表名称。不过,您可以在映射中手动指定表名。

    注意 - 现在您已经添加了迁移,这将触发另一个迁移(或者如果您不想要迁移,只需删除项目中的 Migrations 文件夹和数据库中的 dbo._MigrationHistory 表)。

    在 DbContext 中:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Hauler>().ToTable("Hauler");
        modelBuilder.Entity<Sale>().ToTable("Sale");
    }
    

    如果您有一个所有单数名称的现有数据库,您也可以在上述方法中全局删除复数约定:

    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    

    或者通过实体上的属性:

    [Table("Sale")]
    public class Sale 
    {
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多