首页 文章

级联删除与同一实体的一对多关系

提问于
浏览
0

我有一个Comment实体,其中新注释没有父级,但是回复列表,也是对必需父级的注释 .

用户可以创建评论,然后其他用户可以回复该评论,该评论将是所有这些回复的父级,并且回复还可以针对每个回复进行具有父评论的进一步回复 .

如何级联删除每个评论的回复,以便在删除评论或回复该评论时自动删除所有回复及其进一步回复 .

Here is the Comment Model:

public class Comment
{
    public Comment()
    {
        Replies = new List<Comment>();
    }
    [Required]
    public int CommentId { get; set; }

    public ApplicationUser User { get; set; }
    [Required]
    public DateTime Datetime { get; set; }      
    [Required]
    public string Audio { get; set; }

    public Post Post { get; set; }

    [JsonIgnore]
    public List<Comment> Replies { get; set; }

    public Comment Parent { get; set; }
}

Here is What I tried with Fluent API

modelBuilder.Entity<Comment>().
            HasMany(s => s.Replies).
            WithRequired(s => s.Parent).
            WillCascadeOnDelete(true);

It throws following errors

在表'Comments'上引入FOREIGN KEY约束'FK_dbo.Comments_dbo.Comments_Parent_CommentId'可能会导致循环或多个级联路径 . 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束 . 无法创建约束或索引 . 查看以前的错误 .

1 回答

  • 0

    您必须更改为SQL表

    ALTER TABLE注释ADD CONSTRAINT FK_dbo.Comments_dbo.Comments_Parent_CommentId FOREIGN KEY(CommentId)REFERENCES T1(CommentId)ON DELETE CASCADE;

    最后一个大胆的部分是关键 .

相关问题