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
Gestire progetti .NET + React in .NET Aspire
Utilizzare Locust con Azure Load Testing
Interagire con Azure DevOps tramite MCP Server
Definire il colore di una scrollbar HTML tramite CSS
Loggare le query più lente con Entity Framework
Utilizzare una qualunque lista per i parametri di tipo params in C#
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Implementare il throttle in JavaScript
Semplificare i deployment con le label in Azure Container App
Generare una User Delegation SAS in .NET per Azure Blob Storage
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Eseguire query in contemporanea con EF


