2

我创建了一个简单的 MVC3 项目,就像 Music Store 示例一样。一切正常。是时候将数据库移植到 GoDaddy 服务器了,现在我无法从数据库中删除项目。

这是错误:

DELETE 语句与 REFERENCE 约束 \"Captions_Item_Captions\" 冲突。数据库 \"mattymattmofo\"、表 \"dbo.Captions\"、列 'Item_ItemId' 中发生冲突。\r\n语句已终止。

    //
    // POST: /NavigationManager/Delete/5

    [Authorize(Roles = "Administrator")]
    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        Item item = db.Items.Find(id);
        db.Items.Remove(item);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

有人可以帮忙吗?

4

2 回答 2

3

你的外键有问题。问题出在数据库中。您不能删除与外键绑定的行

于 2012-05-25T08:20:32.183 回答
1

在您的数据库中,Items(父表)通过外键与 Captions(子表)链接。这意味着当您从 Items 表中删除一行时,仍可能与 Captions 表中的该行存在连接。因此生成约束以保持数据库完整性。你可以做两件事来解决这个问题:

  1. 删除约束 -不推荐和不好的做法
  2. 使用删除规则更新约束。您有以下选择:No ActionCascadeSet NullSet Default

现在您的约束删除规则可能设置为无操作,这就是您遇到此错误的原因。

您可以通过右键单击约束(在 Keys 文件夹中)-> 修改 -> 扩展插入和更新规范 -> 删除规则,在 Management Studio 中设置删除规则。

或者通过 T-SQL 脚本。有很多关于如何做到这一点的例子。

于 2012-05-25T09:07:42.433 回答