C# aggiornamento entity

Entity Framework e update

Utilizzando Entity Framework, l’update dei dati può spesso risultare difficoltoso. Il primo approccio è quello di recuperare l’entity dal db con qualche operazione di selezione, successivamente impostare il valore delle proprietà modificate ed effettuare il salvataggio sul db.

Qualcosa di simile:

Ovviamente l’utilizzo di using è consigliatissimo per poter effettuare la Dispose all’uscita del blocco.

Questo tipo di approccio, anche se funzionale, evidenzia la necessità di impostare le proprietà singolarmente: in questo caso sono state necessarie sei righe di codice ma, se il modello fosse stato più complesso, sarebbero state molte di più.

Il tutto aumentando il numero di possibili errori che, non sempre, sono di facile individuazione.

Ottimizzare il codice

Supponiamo di dover effettuare il replace dell’intero record all’interno del database. Una volta recuperato con la solita operazione selezione, possiamo utilizzare l’operatore Entry per poter effettuare l’aggiornamento. Il codice precedente diventa:

Una volta ottenuta l’entity con l’operazione di Find (il valore di Id potrebbe essere già presente all’interno di newEntityValues) l’utilizzo di .CurrentValues.SetValues(…) consente di impostare tutti i campi della entity con quelli da aggiornate. E’ quindi sufficiente effettuare la il salvataggio con la SaveChanges() e tutti i campi verranno sovrascritti. Con appena due righe di codice è stato possibile effettuare l’aggiornamento dell’intero record.

Un’altro possibile scenario può essere quello di un ViewModel che contiene i dati da aggiornare, che non necessariamente coincide con tutti i campi presenti nel db. Anche in questo caso è possibile utilizzare una un metodo simile a quello precedente:

In questo caso, solo le proprietà con lo stesso nome saranno aggiornate.

Questi sono solo due degli approcci che possono utilizzati per effettuare l’update di un entity senza la necessità di settare tutte le proprietà.

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.