实体框架多对多自我引用

Unk*_*own 7 entity-framework-4

我有一个实体用户.每个用户应该有很多朋友和老师.使用EF Code First,我对如何实现我想要的东西感到有点困惑.我看到了自我引用的例子,但没有多对多的例子.例如:

public class Employee
{
  #region Properties

  public int EmployeeID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }

  public int? ManagerID { get; set; }
  public Employee Manager { get; set; }

  #endregion
}
Run Code Online (Sandbox Code Playgroud)

和modelBuilder:

modelBuilder.Entity<Employee>().
      HasOptional(e => e.Manager).
      WithMany().
      HasForeignKey(m => m.ManagerID);
Run Code Online (Sandbox Code Playgroud)

如何在我的情况下创建一个具有自我引用的实体,其中有朋友(如果是b的朋友,这意味着b是a的朋友)和教师(如果是b的老师,b是a的学生)?

对不起,如果已经存在类似的线程.任何帮助是极大的赞赏.

Unk*_*own 10

好吧,因为很多人回答了这个问题;),我搜索了一下,我找到了解决方案.该实体看起来像:

public class User
{
    public int ID { get; set; }
    public string UserName { get; set; }

    public virtual ICollection<User> Friends { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

modelBuilder:

modelBuilder.Entity<User>()
                .HasMany(x => x.Friends)
                .WithMany();
Run Code Online (Sandbox Code Playgroud)

最后我制作了帮助方法BeFriend和BecomeTeacherStudent,这确保当你成为某人的朋友时,他会成为你的朋友(以及师生的各自的事情).