2

我希望能够访问关注者并作为我的用户实体的集合进行关注:

public class User
{
  public int Id { get; set; }
  public ICollection<User> Followers { get; set; }
  public ICollection<User> Following { get; set; }
}

然后这将映射到一个表:

用户关注者(用户 ID,关注者 ID)

我可以通过一些流畅的配置正确生成表格并为关注者工作:

modelBuilder.Entity<User>().HasMany(m => m.Followers).WithMany().Map(x => x.MapLeftKey("UserId").MapRightKey("FollowerId").ToTable("UserFollowers"));

棘手的部分是让 EF 知道 FollowerId 应该映射到同一个表,但 FollowerId 映射到用户。

我试过简单地添加:

modelBuilder.Entity<User>().HasMany(m => m.Following).WithMany().Map(x => x.MapLeftKey("FollowerId").MapRightKey("UserId").ToTable("UserFollowers"));

但我收到一个错误:

已经定义了具有模式 'dbo' 和表 'UserFollowers' 的 EntitySet 'UserUser1'。每个 EntitySet 必须引用一个唯一的模式和表。

我该如何解决这个问题?

4

1 回答 1

4

您可以使用这样的一个映射来做到这一点。

modelBuilder.Entity<User>().HasMany(m => m.Followers).WithMany(m=>m.Following ).Map(x => x.MapLeftKey("UserId").MapRightKey("FollowerId").ToTable("UserFollowers"));
于 2012-11-30T16:59:06.177 回答