在实体框架中配置单向关系

时间:2013-10-05 19:40:27

标签: entity-framework

我有一个模特

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”

我需要在映射文件中包含哪些内容来映射此字段?

1 个答案:

答案 0 :(得分:1)

类似的东西:

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