Я пытаюсь получить сущность, а затем обновлять ее, но я хочу получить ее без отслеживания, поэтому я могу прикрепить ее к контексту.
У меня есть ссылка 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);