类型' System.InvalidOperationException'的例外情况发生在EntityFramework中

时间:2015-12-30 23:17:49

标签: sql-server entity-framework entity-framework-6

我正在尝试从表中删除所有数据并重新添加,但我得到以下异常:

  

类型' System.InvalidOperationException'的例外情况发生在EntityFramework.dll中但未在用户代码中处理附加信息:操作失败:由于一个或多个外键属性不可为空,因此无法更改关系。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

起初我虽然很明显,直到我查看我的数据库(下面)。为了检查我是否遗漏了某些内容,我成功删除了SSMS中的所有相关行。如果我可以在SQL中删除没有外键约束的行,为什么我不能在EF中执行它?

The relevant tables

编辑: 我想从房间表中删除

1 个答案:

答案 0 :(得分:0)

根据错误消息并且您尝试从Rooms表中删除,似乎您在与RoomID绑定的Images表上有强制外键约束。

您可以通过右键单击SSMS中的Rooms表并单击“Show Dependencies”来确定导致该问题的关系。这将显示所有基于外键的模式绑定依赖项。

假设是这种情况,从Rooms中删除这些行将孤立Image中的记录或者可能将它们绑定到您正在插入的记录(如果进行身份插入),不确定您的意图是什么。如果您想继续,有两种选择:

  • 删除受外键约束的记录。
  • 右键单击外键,禁用SSMS中外键的强制执行,单击“修改”,并将“强制外键约束”设置为“否”。您可能还需要将“插入和更新”规范设置为“无操作”。

理想情况下,您只是删除一些记录并且不必删除约束,因为这会损害数据库的引用完整性。