我有2个表:项目和位置(一个 - 多个)。
我选择了一个位置,然后尝试更新它
实体从{Id=2, Name="name1",City="city1",Items=null}
转到{Id=2, Name="name1", City="city2",Items=null}
,我想保存更新。
基类的更新方法是:
public virtual void Update(T entity)
{
Entities.Attach(entity);
Context.ObjectStateManager
.ChangeObjectState(entity, System.Data.EntityState.Modified);
}
我在其他表上做了几次更新,没有任何问题,但在这种情况下,我得到"An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key."
,我真的不明白为什么。
答案 0 :(得分:3)
您可以尝试为上下文指定:MergeOptions.NoTracking
,看看是否能解决您的问题。
此外,您可以尝试Context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry)
查看对象是否存在且可以更新。