我希望能够访问关注者并跟随我的用户实体收集:
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必须引用一个唯一的模式和 表
如何解决此问题?
答案 0 :(得分:4)
你可以使用这样的一个映射来做到这一点。
modelBuilder.Entity<User>().HasMany(m => m.Followers).WithMany(m=>m.Following ).Map(x => x.MapLeftKey("UserId").MapRightKey("FollowerId").ToTable("UserFollowers"));