2

ユーザーエンティティからコレクションとしてフォロワーとフォローにアクセスできるようにしたい:

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

これは、テーブルにマップされます。

UserFollowers(ユーザーID、フォロワーID)

テーブルを正しく生成し、流暢な構成でフォロワーのために機能させることができます:

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 は、一意のスキーマとテーブルを参照する必要があります。

これを解決するにはどうすればよいですか?

4

1 に答える 1

4

このような 1 つのマッピングを使用してこれを行うことができます。

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 に答える