实体框架对象包含相同的对象

时间:2015-02-25 07:09:09

标签: c# entity-framework entity-framework-6

public class ProjectPage
{
    [Key]
    public Guid Id { get; set; }
    public ProjectPageType Type { get; set; }

    public Guid? HeaderId { get; set; }
    public ProjectPage Header { get; set; }

    public Guid? FooterId { get; set; }
    public ProjectPage Footer { get; set; }
}

是否可以先在Entity Framework代码中建立此关系?我可以在模型创建上写些什么来使其工作?现在我有:

modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Header);
modelBuilder.Entity<ProjectPage>().HasOptional(p => p.Footer);

但这是错误的

1 个答案:

答案 0 :(得分:2)

您必须指定外键:

 modelBuilder.Entity<ProjectPage>()
             .HasOptional(e => e.Header)
             .WithMany()
             .HasForeignKey(m => m.HeaderId);

 modelBuilder.Entity<ProjectPage>().
             .HasOptional(e => e.Footer)
             .WithMany()
             .HasForeignKey(m => m.FooterId);