想象一下这个数据库模型:
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Firstname { get; set; }
public ICollection<Role> Roles { get; set; }
}
public class Role
{
public int Id { get; set; }
public string RoleType { get; set; }
public ICollection<User> Users { get; set; }
}
有一个看起来像这样的中间表(不作为 POCO 存在):
UserRole UserId RoleId
然后我决定删除一个角色,这意味着这个角色在中间表中的所有关系也应该被删除。
无论我尝试什么,我都会收到以下错误消息:
DELETE 语句与 REFERENCE 约束“FK_UserRole_Role”冲突。冲突发生在数据库“dbname”、表“dbo.UserRole”、列“RoleId”中。
或此错误消息:
无法删除该对象,因为它在 ObjectStateManager 中找不到。
第一条错误消息来自此尝试:
_dataContext.Entry(role).State = EntityState.Deleted;
_dataContext.SaveChanges();
这是第二条错误消息的原因:
_dataContext.Circuit.Remove(role);
_dataContext.SaveChanges();
我做了其他一些尝试,但我不记得它们了,因为我从今天早上(格林威治标准时间 +2)开始就一直在努力让它工作。
谁能指出我正确的方向?