0

我有一个模型

集线器 -< 部分

部分是一个树层次结构,但它们都属于一个集线器(有另一个表管理层次结构,因为一个部分可以在树中出现两次)

集线器也应该有一个根部分,所以在我的集线器实体上我有:

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”

我需要在映射文件中包含什么来映射此字段?

4

1 回答 1

1

就像是 :

this.HasRequired(t => t.RootSection)
    .WithMany()
    .HasForeignKey(d => d.RootSectionId);
于 2013-10-05T20:00:14.807 回答