Мой код выглядит следующим образом: (где «пользователь» является экземпляр UserProfile передается обратно с точки зрения после того, как редактируется)MVC4 Ef5 Изменения не сохраняются в БД
UserProfile original = DBContext.UserProfiles.Where(x => x.UserId == user.UserId).FirstOrDefault();
if (original != null)
{
original = user;
DAL.DAL.Instance.TGIMobiledb.SaveChanges();
}
Этот код срабатывает без ошибок, но не обновить БД. После некоторых исследований, кажется, я должен добавить следующую строку перед вызовом SaveChanges()
DBContext.Entry(original).State = EntityState.Modified;
Но эта строка кода вызывает эту ошибку:.
«Объект с тем же ключом уже существует в ObjectStateManager ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом ".
Изменения сохраняются в БД штрафа, если я назначу каждое поле вручную, как это:
original.UserId = user.UserId;
original.FirstName = user.FirstName;
original.Surname = user.Surname;
original.UserName = user.UserName;
Очевидно, что это меньше, чем оптимальный, особенно с крупными структурами.
Здесь http://stackoverflow.com/questions/15336248/entity-framework-5-updating-a-record хорошее обсуждение сценариев обновления объектов в EF5. –