代码优先级联问题



这是我得到的错误:"在表 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]时的外键关系,(例如 CategoryIdRolePermission 中),默认情况下启用级联删除。

最新更新