Quando si esegue una query sfruttando LINQ to Entities o Entity SQL, Entity Framework prima effettua la query ed una volta ottenuti i risultati verifica se l'oggetto ritrovato è già presente in memoria. Per default, se l'oggetto già è stato caricato, quello letto dal database viene scartato. Questo a volte è uno spreco di risorse in quanto si potrebbe prima cercare l'oggetto in memoria e poi sul database.
Per fare questo possiamo utilizzare il metodo GetObjectByKey che accetta in input una EntityKey e ricerca appunto l'oggetto prima in memoria e poi sul database.
var key = new EntityKey("Customers", "CustomerId", 1); var customer = ctx.GetObjectByKey(key);
La classe EntityKey accetta come parametri il nome dell'EntitySet, il nome della proprietà che fa da primary key ed il suo valore. Il metodo GetObjectByKey è invece molto semplice.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Change tracking e composition in Entity Framework
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Eseguire query in contemporanea con EF
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Loggare le query più lente con Entity Framework
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
I più letti di oggi
- Gestire coppie chiave-valore con Autocomplete di jQuery UI in ASP.NET
- Usare Json.NET come motore di serializzazione in ASP.NET MVC
- Microsoft Security Bulletin MS05-014
- Effettuare un redirect permanente di una pagina ASP.NET 4.0
- Attivare l'output caching su ASP.NET Web API
- Gestione CSS in Blazor con .NET 9