繁体   English   中英

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

[英]What is the proper way to remove a reference using the .NET 4 Entity Framework?

我有一个名为projectVersionTPM_PROJECTVERSION实例,该实例具有一个名为TPM_USER5的属性,该属性的类型为TPM_USER 一个TPM_PROJECTVERSION可以有零个或一个TPM_USER5引用(对不起,我没有提供这些名称。)

当用户单击“ 删除”按钮时,我想删除此引用,因此将数据库中的列设置为null。 我尝试了以下方法:

projectVersion.TPM_USER5 = null;

但是,当我调用context.SaveChanges() ,该列未更新,并且没有任何反应。 在调试器下,我可以看到projectVersion.TPM_USER5确实为空,并且我还看到projectVersion.TPM_USER5Reference.IsLoaded为true。 我也尝试过:

context.DeleteObject(projectVersion.TPM_USER5);

如果执行此操作,则在调用context.SaveChanges()出现异常:

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

我很乐意发布有关实体映射的更多信息,但不确定确切相关的信息。 有任何想法吗?

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

每个导航属性都必须具有相关的原始属性(不是POCO实体),并且您可以使用两者将用户与TPM_USER5关联(原始属性-设置ID,导航属性-设置引用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM