无法使用POCO更新Entity Framework 4中的实体

时间:2010-10-30 14:55:26

标签: c# .net entity-framework entity-framework-4 poco

我有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.",我真的不明白为什么。

1 个答案:

答案 0 :(得分:3)

您可以尝试为上下文指定:MergeOptions.NoTracking,看看是否能解决您的问题。

此外,您可以尝试Context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry)查看对象是否存在且可以更新。