これらは私の単純化されたエンティティです:
public class User : Entity
{
public virtual ICollection<Role> Roles { get; set; }
}
public class Role : Entity
{
public virtual ICollection<User> Users { get; set; }
}
var user = dbContext.Set<User>().Find(id);
dbContext.Set<User>().Remove(user);
dbContext.SaveChanges(); // here i get error (can't delete because it's the
//referenced by join table roleUsers
問題は、結合テーブルがユーザーテーブルを参照し、efがユーザーを削除する前に結合テーブルからレコードを削除しないことです。
テストケースを書いてみたところ、次のことに気づきました。
同じコンテキストを使用してロールを持つユーザーを追加し、変更を保存し、変更を削除して再度保存すると、機能します
しかし、挿入用と削除用の2つの異なるコンテキストを使用すると、このエラーが発生します