2016-06-24 55 views
0

這發生了兩次在同一個項目上。我使用的是MVC/VS2015社區,我添加了2個類:hauler和sale。模型和EF正在使他們複數 - 卡車/拖車

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(一次爲卡車,一次出售)!

我做錯了什麼,抓住了「複數」的名字?這在我之前就已經發生過了,我最不喜歡解釋爲什麼。現在最奇怪的是,該網站將工作,但表格是多層(運輸和銷售)。

回答

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 
{ 

}