Implementing Cascade Delete in a self-reference table in EF Core 2

How can I implement Cascade Delete in my own lookup table in EF Core 2 (code first)?

(For example, there is a table of comments, and a person can respond to a comment, and this answer can respond to others.)

public class Comment { public virtual int Id { get; set; } public virtual int? ParentId { get; set; } public Comment Parent { get; set; } public virtual IList<Comment> Replies { get; set; } public virtual string Description { get; set; } public virtual Article Article { get; set; } } 

enter image description here

0
source share
1 answer

The problem is solved by the recursive method:

 [HttpPost] public async Task<JsonResult> DeleteComment([FromBody] DeleteCommentViewModel obj) { if (ModelState.IsValid) { var comment = await _commentRepository.GetAll().SingleOrDefaultAsync(m => m.Id == obj.CommentId); if (comment != null) { await RemoveChildren(comment.Id); _commentRepository.Delete(comment); } if (Request.IsAjaxRequest()) { return Json(1); } } return Json(new { code = 0 }); } async Task RemoveChildren(int i) { var children = await _commentRepository.GetAll().Where(c => c.ParentId = i).ToListAsync(); foreach (var child in children) { await RemoveChildren(child.Id); _commentRepository.Delete(child); } } 
0
source

Source: https://habr.com/ru/post/909646/


All Articles