Quando sviluppiamo i nostri servizi molto spesso mettiamo a disposizione un metodo generico Write e non i metodi Update e Create. All'interno di questo metodo dobbiamo capire se invocare il metodo Attach o AddObject per persistere l'oggetto passato in input.
Un modo molto semplice per fare questo è osservare il valore della proprietà chiave della entity. Supponendo che la proprietà chiave sia un intero, se il valore è 0 effettuiamo un inserimento metodo (AddObject), se il valore è superiore a 0, invochiamo un aggiornamento (metodo Attach). Volendo, possiamo anche definire che se il valore è -1, l'ggetto va eliminato (metodo DeleteObject).
Con questa semplice tecnica possiamo evitare una proliferazione dei metodi nell'interfaccia del nostro servizio che è una cosa buona.
public void WriteCustomer(Customer cust) { ... if (cust.Id == 0) ctx.AddObject(cust) else { ctx.Attach(cust); ctx.ObjectStateManager.ChangeObjectState(cust, EntityState.Modified); } ctx.SaveChanges(); ... }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare l'organizzazione delle risorse con Azure Policy
La gestione della riconnessione al server di Blazor in .NET 9
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Evitare memory leaks nelle closure JavaScript
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Implementare il throttle in JavaScript
Testare l'invio dei messaggi con Event Hubs Data Explorer
Loggare le query più lente con Entity Framework
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Creare una libreria CSS universale - Rotazione degli elementi