从嵌套表 MVC 5 中删除记录

Deleting records from nested tables MVC 5

我无法从我拥有的 3 个嵌套 table 中删除。

当我尝试从第一个 table 中删除一条记录时,它给我一个错误

System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint

删除动作方法为:

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int id)
    {
        Parent parent = db.Parent.FirstOrDefault(t => t.ParentID == id);
        foreach(var item in parent.Child.ToList())
        {
            db.Child.Remove(item);
            foreach (var grand in item.Grand.ToList())
            {
                db.Grand.Remove(grand);
            }
        }
        db.Parent.Remove(parent);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

如果能帮助解决这个问题,我将不胜感激 此外,如果有人可以指导我阅读有关嵌套 table 的 CRUD 操作的教程,那将对我有很大帮助。

感谢 Hyarantar,这是工作代码

 public ActionResult DeleteConfirmed(int id)
{
    Parent parent = db.Parent.FirstOrDefault(t => t.ParentID == id);
    foreach(var item in parent.Child.ToList())
    {
        foreach (var grand in item.Grand.ToList())
        {
            db.Grand.Remove(grand);
        }
        db.Child.Remove(item);  
    }
    db.Parent.Remove(parent);
    db.SaveChanges();
    return RedirectToAction("Index");
}

我只需要更改删除项目的顺序,所以 db.Child.Remove(item) 已放在删除选项的循环之后。

这是我在 MVC 5 中的工作,用于通过删除父实体来删除子实体

public ActionResult DeleteConfirmed(int id, Recipee Recipe_Id) {

        if (Recipe_Id != null)
        {
            using (RecipeeStoreEntities1 context = new RecipeeStoreEntities1())
            {
                var masterData = context.Recipees.Include("Ingredients").Where(p => p.Recipe_Id == id).FirstOrDefault();

                var childData = masterData.Ingredients.ToList();
                foreach (var data in childData)
                {
                    context.Ingredients.Remove(data).Recipe_Id = id;

                }
                context.SaveChanges();
                ModelState.Clear();
            }

            Models.Recipee objreci = new Models.Recipee();
            objreci = db.Recipees.Where(x => x.Recipe_Id == id).FirstOrDefault();
            db.Recipees.Remove(objreci);
            db.SaveChanges();
           // return RedirectToAction("Index");

        }
        return RedirectToAction("Index", Recipe_Id);
    }