我有一个评论实体,其中新评论没有父评论,但是评论列表也是必填父评论。
用户可以创建评论,然后其他用户可以回复该评论,该评论将是所有这些回复的父级,并且回复也可以对每个回复的父评论进行进一步回复。
如何级联删除每条评论的回复,以便在删除评论或回复评论时自动删除所有回复及其进一步回复。
以下是评论模型:
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);
会引发以下错误
引入FOREIGN KEY约束 &#39; FK_dbo.Comments_dbo.Comments_Parent_CommentId&#39;在桌子上&#39;评论&#39; 可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY 限制。无法创建约束或索引。见前 错误。
答案 0 :(得分:0)
您必须更改为SQL表,如
ALTER TABLE注释ADD CONSTRAINT FK_dbo.Comments_dbo.Comments_Parent_CommentId FOREIGN KEY(CommentId) 参考文献T1(CommentId)
ON DELETE CASCADE;
最后一个粗体部分是关键。