这些是我的简化实体:
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 个不同的上下文,一个用于插入,另一个用于删除,我会收到此错误