Ho un ID con me e ho un nome con me. Quindi, in sostanza, il mio metodo è appena questi parametri:Perché devo cadere in tutti gli ostacoli per un semplice aggiornamento in EF?
public void Foo(int id, string name)
{
}
e ho questo pezzo di logica metodo all'interno:
User user = new User(){ Id = id, Name = name };
Db.Entry(user).State = System.Data.EntityState.Modified;
Db.SaveChanges();
Questo è tutto. Nulla di bello. Ottengo questo errore: "An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key"
e questa risposta di Ladislav Mrnka: An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key
suggerisce di utilizzare context.Entry(oldEntity).CurrentValues.SetValues(newEntity);
, ma io in realtà non hanno oldEntity con me. Qualcuno può dirmi come posso aggiornare solo 1 proprietà dell'utente? Sto diventando matto.
perché non eseguire l'aggiornamento utilizzando la selezione dall'entità anziché eseguire System.Data.EntityState.Modified; –
Non ho esperienza di codice (e quindi non invierò una risposta), ma 'Db' sopra si riferisce a un contesto di database? In tal caso, i contesti nei mondi model-first e database-first sono progettati per essere oggetti di breve durata basati sul modello dell'unità di lavoro. Perché non creare un nuovo contesto per eseguire questa operazione? –
@COLD TOLD: Perché voglio che sia efficiente. Non voglio licenziare 2 richieste solo per aggiornare una singola proprietà di poche decine di proprietà che ho nel mio modello utente. – Jack