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
Loggare le query più lente con Entity Framework
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Mischiare codice server side e client side in una query LINQ con Entity Framework
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Le DirectInk API nella Universal Windows Platform
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Gli oggetti CallOut di Expression Blend 4.0
- Inserire le news di Punto Informatico nel proprio sito


