Невозможно обновить сущность в Entity Framework 4, используя POCO - PullRequest
1 голос
/ 30 октября 2010

У меня есть 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 Ответ

3 голосов
/ 30 октября 2010

Вы можете попробовать указать: MergeOptions.NoTracking для контекста и посмотреть, решит ли это вашу проблему.

Кроме того, вы можете попробовать Context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry), чтобы увидеть, существует ли объект и можно ли его обновить.

...