删除asp.net mvc中的对象不起作用

时间:2015-05-23 13:49:26

标签: c# asp.net-mvc entity-framework

在控制器中,构建对象并将其保存到数据库中。 在同一个控制器操作中,我创建了另一个不同类型的对象并保存它(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");
}

1 个答案:

答案 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");
}

您还可以在数据库中的关系上启用级联删除。