User テーブルと Roles テーブルがあります。User テーブルと Roles テーブルの ID を含む、自動生成された UsersRoles リンク テーブルがあります。これは、次のコードを使用して生成されます。
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany(r => r.Users)
.Map(c => {
c.MapLeftKey("UserId");
c.MapRightKey("RoleId");
c.ToTable("UsersRoles");
});
関連のないエンティティを追加して呼び出しようとするとContext.SaveChanges()
、次のエラーが表示されます。
PRIMARY KEY 制約「PK_UsersRoles」に違反しています。オブジェクト 'dbo.UsersRoles' に重複するキーを挿入できません。重複キーの値は (2beaf837-9034-4376-9510-b1609c54efbe, dcd16d00-d46e-4d48-8328-3e7b35b11ccf) です。ステートメントは終了されました。
エラーに記載されている項目を確認しConext.ChangeTracker.Entries()
ましたが、エンティティの状態は Unchanged とマークされています。
追加済みとしてマークされている唯一のエンティティは、追加しようとしている新しいレコードであり、それ以外はすべて変更なしとしてマークされています。
エンティティを追加するためのコード:
RoleGroup group = Context.RoleGroups.Create();
group.Title = roleGroupName;
Context.Set<RoleGroup>().Add(group);
Context.SaveChanges();
なぜこれが起こっているのか誰にも分かりますか?