Я пытаюсь получить объект, а затем обновить его, но я хочу получить его без отслеживания, чтобы я мог прикрепить его обратно к контексту.
У меня есть ссылка EntityFramework.dll
(4.1). Я создал базу данных из модели. (не сначала код).
Получить пользователя:
db.Users.MergeOption = MergeOption.NoTracking;
IQueryable<User> query = db.Users;//.AsNoTracking(); //<-- apparently, this is code-first only.
return query;
Обновление пользователя:
db.Users.Attach(user); //error here.
ObjectStateEntry entry = db.ObjectStateManager.GetObjectStateEntry(user);
entry.SetModifiedProperty(propertyName);
db.SaveChanges();
return user;
Ошибка:
Объект с таким же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом.
Я называю метод так:
var user = userRepository.GetUsers().FirstOrDefault(u => u.UserId == userId);
user.Identifiers.Add(someIdent);
userRepository.UpdateUser(user);