2013-10-05 35 views
0

我有一個模型配置在實體框架中的一個方向關係

花鼓 - < SECTIONS

部分是一個樹狀分層結構,但它們都屬於一個集線器(還有另外一個表管理層級作爲一個區間可以在樹中出現兩次)

集線器也應該有一個根部分,所以對我中心的實體,我有:

public partial class Hub 
{ 
    public Hub() 
    { 
     this.Sections = new List<Section>(); 
    } 

    public int HubId { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Section> Sections { get; set; } 

    public int RootSectionId { get; set; } 
    public virtual Section RootSection { get; set; } 
} 

如果我不設置映射按:

public class HubMap : EntityTypeConfiguration<Hub> 
{ 
    public HubMap() 
    { 
     // Primary Key 
     this.HasKey(t => t.HubId); 


     // Table & Column Mappings 
     this.ToTable("Hubs"); 
     this.Property(t => t.HubId).HasColumnName("HubId"); 
     this.Property(t => t.Name).HasColumnName("Name"); 

     // Relationships 
     this.HasRequired(t => t.Site) 
      .WithMany(t => t.Hubs) 
      .HasForeignKey(d => d.SiteId); 

    } 
} 

我得到一個錯誤約沒有找到RootSection_SectionId列。現在我可以重命名該列以匹配,但爲了我對EF映射的理解,我希望能夠指定它們的列,即「RootSectionId」

我需要在映射文件來映射此字段?

回答

1

喜歡的東西:

this.HasRequired(t => t.RootSection) 
    .WithMany() 
    .HasForeignKey(d => d.RootSectionId); 
+0

完美。謝謝! – Simon