我有一个实体用户。每个用户应该有很多朋友和老师。使用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);
如何在我的情况下创建一个具有自我引用的实体,其中有朋友(如果是b的朋友,这意味着b是a的朋友)和教师(如果是b的老师,b是学生的一个)?
很抱歉,如果已存在类似的帖子。 非常感谢任何帮助。
答案 0 :(得分:10)
好的,因为很多人都回答了这个问题;),我搜索了一下,我找到了解决方案。该实体看起来像:
public class User
{
public int ID { get; set; }
public string UserName { get; set; }
public virtual ICollection<User> Friends { get; set; }
}
模型构建者:
modelBuilder.Entity<User>()
.HasMany(x => x.Friends)
.WithMany();
最后我制作了帮助方法BeFriend和BecomeTeacherStudent,确保当你成为某人的朋友时,他会成为你的朋友(以及师生的相应事物)。