繁体   English   中英

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

[英]Cascade delete on one to many relation with same entity

我有一个Comment实体,其中新注释没有父级,但有一个答复列表,该列表也是带有必填父级的注释。

一个用户可以创建一个评论,然后其他用户可以对该评论进行回复,该评论将是所有这些回复的父级,并且每个回复中的父级评论也可以包含其他回复。

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

这是评论模型:

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; }
}

这是我尝试使用Fluent API的方法

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

它引发以下错误

在表“注释”上引入外键约束“ FK_dbo.Comments_dbo.Comments_Parent_CommentId”可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。 请参阅先前的错误。

您将不得不更改为SQL表,例如

更改表注释添加约束FK_dbo.Comments_dbo.Comments_Parent_CommentId外键(CommentId)参考T1(CommentId)
删除级联时;

最后一个粗体部分是关键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM