这是我得到的错误:"在表 RolePermissions
上引入 FOREIGN KEY 约束FK_dbo.RolePermissions_dbo.Permissions_Permission_ID
可能会导致循环或多个级联路径。指定"删除时不执行任何操作"或"更新时不执行任何操作",或修改其他外键约束。无法创建约束或索引。请参阅以前的错误。
这是我的课程:
public class Permission
{
[Key]
public int ID { get; set; }
[Required]
public int PermissionObjectId { get; set; }
public PermissionObject PermissionObject { get; set; }
[Required]
public int CategoryId { get; set; }
public Category Category { get; set; }
[Required]
public int ReadWriteId { get; set; }
public ReadWrite ReadWrite { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int CategoryId { get; set; }
public Category Category { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
}
public class Category
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public int OrderID { get; set; }
public override string ToString()
{
return ID.ToString();
}
}
我做错了什么?
使用 fluent api 进行设置 CascadeOndelete = fasle 。
查看此链接可能会对您有所帮助:链接
看起来 EF 正在尝试在角色和权限之间创建某种关系(多对多?),但你也有类别角色和类别权限的一对多关系,这些关系也启用了级联删除。
对于使用不可为空键或[Required]
时的外键关系,(例如 CategoryId
在 Role
和 Permission
中),默认情况下启用级联删除。