我有一个模特
HUBS - < 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”
我需要在映射文件中包含哪些内容来映射此字段?
答案 0 :(得分:1)
类似的东西:
this.HasRequired(t => t.RootSection)
.WithMany()
.HasForeignKey(d => d.RootSectionId);