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



>我有一个注释实体,其中新注释没有父项,但有一个回复列表,该列表也是具有必需父项的注释。

用户可以创建评论,然后其他用户可以回复该评论,该评论将成为所有这些回复的父级,并且回复也可以为每个回复提供父评论的进一步回复。

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

下面是注释模型:

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"表"注释" 可能导致循环或多个级联路径。指定 打开 删除 否 操作或更新时不执行任何操作,或修改其他外键 约束。无法创建约束或索引。请参阅上一页 错误。

您必须更改为SQL表,例如

更改表注释 添加约束 FK_dbo。Comments_dbo。Comments_Parent_CommentId 外键 (注释 ID) 参考文献 T1 (注释 ID)
关于删除级联;

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

最新更新