使用.NET 4实体框架删除引用的正确方法是什么?

时间:2012-11-13 20:04:11

标签: c# .net entity-framework entity-framework-4

我有一个名为TPM_PROJECTVERSION的{​​{1}}实例,其中有一个名为projectVersion的属性,类型为TPM_USER5TPM_USER可以有零个或一个TPM_PROJECTVERSION引用(抱歉,我没有提出这些名称。)

当用户单击删除按钮时,我想删除此引用,从而将数据库中的列设置为null。我尝试了以下内容:

TPM_USER5

但是,当我调用projectVersion.TPM_USER5 = null; 时,该列不会更新,也不会发生任何事情。在调试器下,我可以看到context.SaveChanges()确实为空,我也看到projectVersion.TPM_USER5为真。我也试过了:

projectVersion.TPM_USER5Reference.IsLoaded

如果我这样做,当我致电context.DeleteObject(projectVersion.TPM_USER5); 时,我会得到例外:

  

{“ORA-02292:完整性约束   违反了(TPMDBO.TPM_PROJECTCHANGES_TPM_US_FK1) - 找到了儿童记录“}

我很乐意发布有关实体映射的更多信息,但不确定究竟有什么相关性。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您只删除导航属性(TPM_USER5)。尝试将原始属性(TPM_USER5ID? - 可能是您的数据库列名称)设置为null。

每个导航属性必须具有相关的原始属性(不是POCO实体),您可以使用它们将用户与TPM_USER5相关联(原始属性 - 设置ID,导航属性 - 设置参考)。