【发布时间】:2013-01-04 14:20:12
【问题描述】:
调用AcceptChanges 时出现以下错误:
AcceptChanges 无法继续,因为对象的键值与ObjectStateManager 中的另一个对象冲突。在调用AcceptChanges之前确保键值是唯一的。
现在我在网上搜索了很多,但没有找到我想要的答案。
我知道他们是设计使然,因此您应该防止通过使用 ID 而不是实体对象来添加已经存在的实体,但我处于无法做到这一点的情况。
我有一个导入和一个导出,这是通用的,我可以提供任何实体对象,它会使其成为 xml 格式,相反,我可以提供任何 xml 并获得正确的实体。我不能使用序列化程序,因为我必须以自定义格式制作 xml。
问题在于,当我有更深的嵌套实体之前可能已经添加到主实体中时,我无法在现场检查它,所以它们被添加了。导致同一实体可能被多次添加的问题。
当我进一步领先并希望应用更改时,就会发生错误。
现在考虑到在防止“多次添加同一实体”的问题上我没有选择 - 问题,我必须在添加后处理它。
如何从ObjectStateManager 中删除重复的实体,以便调用应用更改?
【问题讨论】:
标签: c# vb.net entity-framework