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
Assegnare un valore di default a un parametro di una lambda in C#
Sfruttare al massimo i topic space di Event Grid MQTT
Short-circuiting della Pipeline in ASP.NET Core
.NET Conference Italia 2023
Utilizzare Tailwind CSS all'interno di React: primi componenti
Utilizzare Tailwind CSS all'interno di React: installazione
Utilizzare Model as a Service su Microsoft Azure
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Sostituire la GitHub Action di login su private registry
Specificare il versioning nel path degli URL in ASP.NET Web API
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
I più letti di oggi
- Impostare un elemento come ridimensionabile tramite CSS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Personalizzare l'errore del rate limiting middleware in ASP.NET Core
- Accedere alla console di una Azure Container App
- Modificare i metadati nell'head dell'HTML di una Blazor Web App
- Gli oggetti CallOut di Expression Blend 4.0
- SQL Server 2005 December CTP
- Sfruttare le nuove tipologie di input di HTML5 con ASP.NET 4.0
- Upload da una pagina web con Dundas Upload