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
Utilizzare il soft delete for Azure file share
Sviluppare applicazioni con supporto al doppio schermo con Xamarin
DevSecOps applicato ad Azure DevOps
Recuperare un Azure Storage account cancellato
Utilizzare il Nullish Coalescing con TypeScript
Versioning automatico degli Azure Storage Blob
Avviare una registrazione audio e video in una applicazione della Universal Windows Platform
Tracciabilità dei work item nel ciclo di vita del software con Azure DevOps
Utilizzare al meglio gli oggetti HTML input sfruttando i nuovi type
Graph API con .NET 5
Portare un'applicazione Blazor WebAssmbly da static files a hosting in ASP.NET Core
Gestire un errore HTTP in Blazor mostrando un messaggio in popup
I più letti di oggi
- Blazor Conference 2021 - Online
- Track 1: @dbochicchio e @cristiancivera con 'Blazor for absolute beginners'Track 2: @apomic80 con 'Dynamic UI with Blazor WebAssembly'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21
- Track 1: @GiampaoloTUCCI con 'Progressive Web Apps with Blazor'Track 2: @dottor con 'Blazor Tips&Tricks'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21
- Track 1: @cristiancivera con 'Using Components in Blazor'Track 2: @crad77 con 'Blazor and ASP.NET Core with GraphQL and HotChocolate'Track 3: #aspilive Seguici live su => https://aspit.co/BlazorConf-21