Asp.net mvc 从嵌套表MVC 5中删除记录
我在从我拥有的3个嵌套表中删除时遇到问题 当我尝试从第一个表中删除一条记录时,它会给我一个错误 System.Data.SqlClient.SqlException:删除语句冲突 带引用约束 删除操作方法是:Asp.net mvc 从嵌套表MVC 5中删除记录,asp.net-mvc,entity-framework,parent-child,crud,Asp.net Mvc,Entity Framework,Parent Child,Crud,我在从我拥有的3个嵌套表中删除时遇到问题 当我尝试从第一个表中删除一条记录时,它会给我一个错误 System.Data.SqlClient.SqlException:删除语句冲突 带引用约束 删除操作方法是: [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Parent parent =
[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");
}
我真的非常感谢在这个问题上的任何帮助
另外,如果有人能告诉我有关嵌套表的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中通过删除父实体来删除子实体的工作 公共行动结果删除已确认(内部id、接收方配方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);
}
首先,您需要从问题表中删除记录,因为您在问题表中添加了FK,这就是为什么在删除包含FK的所有记录之前,您不能删除主键。您正在尝试删除其他表中引用的数据:您不能这样做。请删除约束,删除数据并重新创建约束,或者首先删除外键引用的数据。(FK表示外键,这是您的错误消息)很抱歉,我对所有这些都不熟悉。如果能提供一个示例,我将不胜感激。@Eyad遵循示例。希望它对您有所帮助。@Eyad基本上是将
db.Question.Remove(item)
放在foreach之后(item.Options中的var选项){db.option.Remove(option);}