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
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Proteggere le risorse Azure con private link e private endpoints
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Creare una custom property in GitHub
Routing statico e PreRendering in una Blazor Web App
Migliorare l'organizzazione delle risorse con Azure Policy
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Utilizzare Tailwind CSS all'interno di React: installazione
Utilizzare il trigger SQL con le Azure Function
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Ottenere un token di accesso per una GitHub App