首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除objectstatemanager中的重复实体

如何删除objectstatemanager中的重复实体
EN

Stack Overflow用户
提问于 2013-01-04 22:20:12
回答 1查看 1K关注 0票数 2

当调用AcceptChanges时,我得到以下错误:

AcceptChanges无法继续,因为该对象的键值与ObjectStateManager中的另一个对象冲突。在调用AcceptChanges之前,请确保键值唯一。

现在我已经在网上搜索了很久,但没有找到我想要的答案。

我知道他们是故意这样做的,所以你应该防止通过使用ID而不是entity对象来添加已经存在的实体,但我所处的情况是我根本不能这么做。

我有一个导入和一个导出,这是通用的,我可以提供任何实体对象,它将使其成为xml格式,反过来,我可以提供任何xml并获得正确的实体。我不能使用序列化程序,因为我必须将xml转换为自定义格式。

问题出在当我有更深的嵌套实体,这些实体之前已经被添加到主实体中,我不能在现场检查它,所以它们被添加了。导致同一实体可能被多次添加的问题。

当我更靠前并希望应用更改时,错误就会发生。

现在,考虑到我在防止“多次添加同一实体”-problem的问题上没有选择,我必须在添加它们之后处理它。

如何从ObjectStateManager中删除重复的实体,以便调用apply changes?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 22:39:38

如何从ObjectStateManager中删除重复的实体,以便调用apply changes?

只能通过搜索ObjectStateManager和解决重复项来手动执行。这就是为什么您应该在将实体添加到ObjectContextObjectStateManager.ObjectStateManagerChanged事件处理程序之前解决该问题的原因。

不管怎样,你问错了问题。即使您从ObjectStateManager中删除了重复的实体,也不能解决问题。删除实体只会破坏你的对象图。您还需要修复对已删除实体的所有引用,并将它们指向单个剩余的实体实例。

这个问题通常由序列化/反序列化直接处理,如果您自己编写它,也应该这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14158865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档