2014-02-12 46 views
0

我有一个实体是这样的:EF代码优先6“复用”多对多自参考

public class Course 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Course> Prerequisites { get; set; } 
    public virtual ICollection<Course> Equivalents { get; set; } 

    public Course() 
    { 
     Prerequisites = new HashSet<Course>(); 
     Equivalents = new HashSet<Course>(); 
    } 
} 

我想创建不同的表,“先决条件”和“等价物”。 我如何配置它?

+0

那你为什么还让他们为同一类型的课程?如果你想让他们在不同的桌子上,我认为你有设计问题。 –

+0

感谢您的回复。你能写下你的建议吗? –

回答

1

这将有助于

public class Course 
{ 

    public int Id { get; set; } 
    public String Name { get; set; } 

    [InverseProperty("PrerequisiteFor")] 
    public virtual ICollection<Course> Prerequisites { get; set; } 
    [InverseProperty("EquivalentTo")] 
    public virtual ICollection<Course> Equivalents { get; set; } 
    [InverseProperty("Equivalents")] 
    public virtual ICollection<Course> EquivalentTo { get; set; } 
    [InverseProperty("Prerequisites")] 
    public virtual ICollection<Course> PrerequisiteFor { get; set; } 

    public Course() 
    { 
     Prerequisites = new HashSet<Course>(); 
     Equivalents = new HashSet<Course>(); 
     PrerequisiteFor = new HashSet<Course>(); 
     EquivalentTo = new HashSet<Course>(); 

    } 
}