根据EF Code First中的关系映射twitter风格的关注者

时间:2012-11-30 16:19:09

标签: entity-framework entity-framework-4 ef-code-first

我希望能够访问关注者并跟随我的用户实体收集:

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

然后将映射到表格:

  

UserFollowers(UserId,FollowerId)

我可以正确生成表格,并为一些流畅的配置的粉丝工作:

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

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

我试过简单地添加:

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

但是我收到了错误:

  

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

如何解决此问题?

1 个答案:

答案 0 :(得分:4)

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

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