一尘不染

自引用多对多递归关系代码优先实体框架

c#

我似乎根本无法完成这项工作

class Member
{
    public virtual IList<Member> Friends { get; set; }
    [Key]
    public int MemberId { get; set; }
    public string Name{ get; set; }
}

我尝试添加映射,但徒劳无功。有没有办法使用CTP5?


阅读 318

收藏
2020-05-19

共1个答案

一尘不染

按照惯例,Code First将单向关联视为一对多。因此,您需要使用流利的API来让Code First知道您希望拥有多对多的自引用关联:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Member>().HasMany(m => m.Friends).WithMany().Map(m =>
        {
            m.MapLeftKey("MemberId");
            m.MapRightKey("FriendId");
            m.ToTable("MembersFriends");
        }
    );
}
2020-05-19