删除具有SQLServer中定义的相关数据和级联删除的实体

时间:2014-12-04 21:41:05

标签: entity-framework entity-framework-6

我在删除包含上下文中包含数据的相关实体的实体后的SaveChanges时收到以下错误。 (我正在删除的实体具有唯一的主键)。我在SQL Server数据库级别配置了Cascading Delete,用于主键表和外键表之间的关系。

“操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性设置为空值如果外键没有...

在我从上下文中删除主数据之前,主实体已明确加载其相关数据。我假设EF和SQL Server会为我处理级联删除。如果相关实体没有数据,则(主要实体的)删除工作正常。如果相关实体中有数据,我会得到上面的错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

教训是EF有一个学习曲线。继续探索。

无论如何,我通过将状态设置为“已删除”然后调用SaveChanges来“删除”实体。如果实体没有相关数据,这似乎工作正常。但是,如果您有一个具有相关“子”实体的实体,则需要在父实体上调用Remove以使“delete”级联通过图形。活到老,学到老。我很确定这就是答案。我想暂时我将停止为删除设置State并改为使用Remove。