从嵌套表 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);
}
我无法从我拥有的 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);
}