Bir varlık almayı ve sonra güncelleştirmeyi deniyorum, ancak izleme olmadan almak istiyorum, bu yüzden yeniden içeriğe ekleyebilirim.İlk önce varlık çerçeve modelindeki izlemeyi kapatın
EntityFramework.dll
başvuru numarasına sahibim (4.1). Veritabanını modelden oluşturdum. (ilk kod değil).
alın kullanıcı:
db.Users.MergeOption = MergeOption.NoTracking;
IQueryable<User> query = db.Users;//.AsNoTracking(); //<-- apparently, this is code-first only.
return query;
Güncelleme kullanıcı:
db.Users.Attach(user); //error here.
ObjectStateEntry entry = db.ObjectStateManager.GetObjectStateEntry(user);
entry.SetModifiedProperty(propertyName);
db.SaveChanges();
return user;
Hata: Ben buna
An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.
böyle yöntemi:
var user = userRepository.GetUsers().FirstOrDefault(u => u.UserId == userId);
user.Identifiers.Add(someIdent);
userRepository.UpdateUser(user);
Çalışması gerekir. Başka bir sorguyla kullanıcı almadığınızdan emin misiniz? –
@Ladislav aynı sorgu. Ben sadece bu kod kullanır –
kodunu kullanarak 1 read/get yöntemi var, tüm kod deposu olmadan benzer kod test ettim ve benim için çalışır. –