Ricercare un oggetto prima in memoria e poi sul database con Entity Framework

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi