在控制器中,构建对象并将其保存到数据库中。 在同一个控制器操作中,我创建了另一个不同类型的对象并保存它(Class SecondType也包含一个ID):
Threading.Thread t = new Threading.Thread(() => { Console.WriteLine("My New thread"); });
t.Start();
有效。当看索引(我使用脚手架选项创建经典的创建,删除,...视图)或详细视图时,我可以看到这个对象,我也可以修改它。但是,如果我点击删除,它会显示我必须确认删除的第一个视图,按下提交按钮后,它会在cDb.SecondType.Add(new SecondType { Designation = "test" });
cDb.SaveChanges();
命令处返回DbUpdateException
而无需任何进一步的信息:
SaveChanges
我不知道为什么会发生这种情况,如果您有任何想法可以解决这个问题,我将非常感激。
这是我可以复制的内容:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
SecondType secondType = db.SecondTypes.Find(id);
db.SecondTypes.Remove(secondType);
db.SaveChanges();
return RedirectToAction("Index");
}
答案 0 :(得分:2)
我的德语有点粗糙,但我认为你的dbo.ThirdTypes表中有条目引用你试图从dbo.SecondTypes表中删除的条目。
在删除secondType条目并调用SaveChanges()之前,尝试删除所有引用dbo.SecondTypes的dbo.ThirdTypes条目。
像这样:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
SecondType secondType = db.SecondTypes.Find(id);
foreach (var thirdType in secondType.ThirdTypes)
{
db.ThirdTypes.Remove(thirdType);
}
db.SecondTypes.Remove(secondType);
db.SaveChanges();
return RedirectToAction("Index");
}
您还可以在数据库中的关系上启用级联删除。