将更改保存到自我跟踪实体时发生异常:
AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges.
我相信该问题已在其他问题中得到解决,例如:自我跟踪实体 - AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突
我的问题是在开发和生产中调试此问题的最佳方法是什么。是否有任何可以捕获/访问的进一步信息,这些信息将详细说明导致异常的实体或实体类型。
如果不是,我是否必须编写一些东西来遍历对象图以查找引用不同对象的重复键?如果是这样,有人有这方面的经验吗?
更多信息:
我的场景涉及以下内容 - 客户端通过 WCF 服务检索一个实体,该服务包含更多实体的集合,所有这些实体都具有与其他实体的各种 FK。这些 FK 关系都包含在 linq 查询中,因此我们有一个完整的对象图。
客户端中的视图使用以前获取的静态数据实体,例如查找表以提高性能。如果我们对 User 说一个带有 FK 的 Customer 对象,它将在从服务中检索时加载。如果我们现在将另一个实体添加到对象图中,例如 Order 并在该对象上设置一个 User 属性,该属性与 Customer 对象中的 Id 相同,但该实体是在不同的点检索到的,因此使用不同的 ObjectContext(即对象具有相同的 ID 但不是对象的相同实例)我收到此错误。
指向另一个问题的链接演示了避免这种情况的方法,但我希望找到有关哪些实体导致问题的更多信息,以便我可以追踪错误。