Impostare una proprietà come non modificata nello state manager di Entity Framework

di Stefano Mostarda, in LINQ, Entity Framework,

Quando sviluppiamo servizi che persistono dati con Entity Framework, spesso per aggiornare i dati ci facciamo passare una entity che poi attacchiamo al contesto. Una volta attaccata al contesto l'entity è ancora in stato di Unchanged, ma possiamo modificarne facilmente lo stato a Modified usando le API del DbContext.
Una volta impostato lo stato dell'entity su Modified, tutte le proprietà dell'entity vengono a loro volta marcate come Modified, ma non sempre questo è il risultato che si vuole ottenere in quanto a volte vogliamo che siano modificate tutte le proprietà tranne una.
Per impostare tute le proprietà a Modified tranne una con Entity Framework 4.x, dobbiamo impostare una a una le proprietà che vogliamo modificare su Modified in quanto con Entity Framework 4.x non è possibile marcare una proprietà come non modificata una volta che è stata marcata su Modified. Con Entity Framework 5 le cose cambiano in quanto possiamo impostare una singola proprietà come non modificata anche quando questa era impostata su Modified.

//Attacco l'entity al contesto
ctx.People.Attach(person);

//Imposto l'entity e tutte le proprieta a Modified
ctx.Entry(person).State = EntityState.Modified;

//Imposto una singola proprieta come non modificata
ctx.Entry(person).Property(p => p.CreationDate).IsModified = false;

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi