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
Integrare OpenTelemetry direttamente in Azure Monitor
Blazor e InputHidden in .NET 10
Mappare una complex property di una entity su un campo JSON
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Keynote .NET Conference Italia 2025
Gestione delle scrollbar dinamiche in HTML e CSS
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Filtrare i dati in ASP.NET Core usando OpenTelemetry su Azure Monitor
Utilizzare WebJobs su Linux con Azure App Service
Gestione opzioni colonna nella Blazor QuickGrid
I più letti di oggi
- Operazioni tra insiemi di array in Javascript
- Gestione dei codeowners in GitHub
- Utilizzare i named query filter di Entity Framework
- Gestire il ciclo di vita di AbortController in Javascript
- Utilizzare le direttive più importanti in una file based app .NET
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Blazor for absolute beginners


