Entity Framework само-ссылка многие ко многим - PullRequest
7 голосов
/ 09 марта 2012

У меня есть сущность Пользователь.Предполагается, что у каждого пользователя много друзей и учителей.С 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
}

и modelBuilder:

modelBuilder.Entity<Employee>().
      HasOptional(e => e.Manager).
      WithMany().
      HasForeignKey(m => m.ManagerID);

Как создать сущность с собственной ссылкой в ​​моем случае, где есть Друзья (если a является другом с b, этоозначает, что b дружит с a) и Teachers (если a - учитель b, b - ученик a)?

Извините, если подобный поток уже существует.Любая помощь с благодарностью.

1 Ответ

10 голосов
/ 10 марта 2012

Хорошо, так как многие люди ответили на это;), я немного больше искал и нашел решение для своего случая.Сущность выглядит следующим образом:

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

    public virtual ICollection<User> Friends { get; set; }
}

modelBuilder:

modelBuilder.Entity<User>()
                .HasMany(x => x.Friends)
                .WithMany();

И, наконец, я создал вспомогательные методы BeFriend и BecomeTeacherStudent, которые гарантируют, что когда вы станете другом с кем-то, он станет другомВы (и соответствующая вещь для учителя-ученика).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...