模特和EF正在使它们成为复数 - 搬运工/搬运工

时间:2016-06-24 20:41:40

标签: asp.net-mvc entity-framework

这在同一个项目中发生了两次。我正在使用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; }       
    }
}

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

我做错了什么来抓住“复数”这个名字?这种情况在我之前发生过,我最不想解释为什么。现在最奇怪的是该网站将起作用,但表格很多(运输和销售)。

1 个答案:

答案 0 :(得分:0)

最初称为“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 
{

}