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
Usare il metodo nameof con un tipo generico in C# 14
Migrare applicazioni legacy nel cloud con Azure App Service Managed Instance
Mappare una complex property di una entity su un campo JSON
Utilizzare noopener e noreferrer nei link HTML
Canary release con .NET Aspire
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
.NET Aspire vs Dapr: differenze, sovrapposizioni e integrazione
Controllare la velocità di spostamento su una pagina HTML
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Integrare Agenti A2A in Azure API Management
Stop alle password con Azure Managed Identity
Keynote Global Azure 2026 - ASPItalia.com


