2017-10-19 74 views
-1

我正在使用EF6訪問一組三個表「TableA」,「TableB」和「TableC」 TableA與TableB和TableC有多對多的關係,所以有兩個表創建TableAableB & TableAableC。這些表格各有兩列, TableA_Id和TableB_Id或TableA_Id和TableC_Id。這有效,但現在DBA希望我從這些列中刪除下劃線字符。使用EF6代碼優先不遷移到現有的數據庫如何指定多對多連接表的列名?

雖然原始表格是通過遷移創建的,但我已經從項目中刪除了遷移方面。我已將實際連接表中的列重命名,但我如何將關係返回到TableA來工作?是否可以通過數據註釋或流利?

表A:

public class TableA 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public virtual ICollection<TableB> TableBs { get; set; } 
    public virtual ICollection<TableC> TableCs { get; set; } 
} 

表B:

public class TableB 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<TableA> TableAs { get; set; } 
} 

表C:

public class TableC 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<TableA> TableAs { get; set; } 
} 

這是不同的,那麼前面的問題,因爲它指定表已經建立的連接,並具有特定的列名稱。問題是如何獲得現有的代碼來映​​射到正確的列名稱

名稱。

回答

2

我會流利的,你可以提到如下鍵。 爲了更好的理解,波紋管和課程學生的例子

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 

    modelBuilder.Entity<Student>() 
       .HasMany<Course>(s => s.Courses) 
       .WithMany(c => c.Students) 
       .Map(cs => 
         { 
          cs.MapLeftKey("StudentId"); 
          cs.MapRightKey("CourseId"); 
          cs.ToTable("StudentCourse"); // this is mappingtable 
         }); 

} 

上面的例子是最好的Blog可以說博客中清楚地說明多對多的關係

+0

這仍然說明這裏給我一個無效的列名(舊列名包含下劃線) –

+0

愚蠢的錯誤...我正在構建一個發佈版本和測試調試版本,所以調試版本沒有看到我的代碼的任何更改。 –

相關問題