这在同一个项目中发生了两次。我正在使用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,然后最终更新数据库。两次(一次用于搬运工,一次用于出售)!
我做错了什么来抓住“复数”这个名字?这种情况在我之前发生过,我最不想解释为什么。现在最奇怪的是该网站将起作用,但表格很多(运输和销售)。
答案 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
{
}