【发布时间】:2012-04-19 03:03:42
【问题描述】:
我正在尝试在 EntityFramework 4.3 Code First 中更新具有 FK 关系的实体。 我尝试通过调用来附加到相关实体: Entry(item).State = EntityState.Unchanged
我得到以下异常:ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象。
我没有更新这些项目,我的主实体上也没有它们的 id 属性。 是否可以知道哪些实体已附加或未附加?
提前致谢, 拉度
【问题讨论】:
-
您可以使用 ObjectContext.ObjectStateManager.GetObjectStateEntries() 方法 (msdn.microsoft.com/en-us/library/bb738497.aspx) 来获取上下文跟踪的所有实体。请注意,这可能是数据库中存在未被 ObjectContext 跟踪的实体。您需要提供一个状态让 ObjectStateManager 知道您需要哪些实体(此枚举具有 Flags 属性,因此您可以使用 | 组合不同的值)
-
这能回答你的问题吗? what is the most reasonable way to find out if entity is attached to dbContext or not?(这里接受的答案字面上链接到潜在的欺骗,在这种情况下,它的好处是也比这个问题更老。)