0

我有一個模型與VS 2012中的MVC4項目中的幾個實體。最近,我添加了一個視圖到我的數據庫名爲'vwTeacherNames',我試圖更新模型和我取消選中該更新的Plorizing選項。EF5的默認表名稱約定導致'無效的對象名稱'異常

然後,我將我的實體重命名爲'TeacherName'。現在,當我囤了PRJ,這個異常被拋出,我定義爲教師一個DropDownList:

Invalid object name 'dbo.TeacherNames'. 

我嘗試過很多辦法,如使用自定義工具,移除.TT文件並再次產生,......不過問題保持堅定!

那麼,我怎樣才能告訴EF右表(實際上是視圖)的名稱是vwTeacherNames

非常感謝

回答

1

找到了!我有一些更多的調整在此添加:

public class myDbContext : DbContext 
{ 
    public PtDbContext() 
     : base("DefaultConnection") 
    { 

    } 

    ... //some entities 

    //Here it is: 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<TeacherName>().Property(t => t.FullName) 
      .HasColumnName("TeacherName"); 

     modelBuilder.Entity<TeacherName>().ToTable("vwTeacherNames", schemaName: "dbo");       

    } 
} 

更新:爲什麼定義之前定義什麼縮腰你的時間?只要殺默認表命名規則,享受進步的PRJ:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     //Adding this line tells the EF not to go through that convention 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();    
    } 

所以,它應該由你的實體EntitySetNameEntityName性能,打造您的查詢,其中第一個是數據庫表名,第二個是你的您在DbContext中使用的實體名稱。