ユーザーとロールの間の単純な多対多の関係に対して、次の流暢な構成があります。両方の方法でナビゲーション プロパティが必要なため、ロール内のユーザーのコレクションがあり、その逆もあります。
新しいエンティティを User に挿入すると、EF は Role_Id 列を挿入しようとします。列は明らかに Role_Id ではなく RoleId であり、さらに多対多のテーブルにあります。ユーザーに Role_Id を指定することはできません。
両側にコレクションを持つことで、EFがどういうわけか混乱していると思います。
modelBuilder.Entity<User>().HasMany(_ => _.Roles).WithMany()
.Map(_ =>
{
_.MapLeftKey("UserId");
_.MapRightKey("RoleId");
_.ToTable("UserRole", "dbo");
});
上記の構成の後に次の構成を配置して、別の方法で関係を作成しようとすると、関係が既に定義されているという例外が発生します。
modelBuilder.Entity<Role>().HasMany(_ => _.Users).WithMany()
.Map(_ =>
{
_.MapLeftKey("RoleId");
_.MapRightKey("UserId");
_.ToTable("UserRole", "dbo");
});