In teoria dovrebbe esserci tramite l'oggetto ObjectStateManager restituito da ObjectContext. Infatti se controlli le due query vedrai che l'istanza dell'oggetto è il medesimo, perché ha lo stesso id. Non credo però memorizzi in base alla query o se lo fa solo se hai ricercato per la chiave (non sono sicuro, non ho mai provato). Non è detto infatti che il risultato della tua query sia lo stesso e quindi IMHO è giusto che rifaccia la query.
Le politiche di cache meglio farsele per conto proprio...

Ciao

Il mio blog
Homepage
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Ricciolo ha scritto:
In teoria dovrebbe esserci tramite l'oggetto ObjectStateManager restituito da ObjectContext. Infatti se controlli le due query vedrai che l'istanza dell'oggetto è il medesimo, perché ha lo stesso id. Non credo però memorizzi in base alla query o se lo fa solo se hai ricercato per la chiave (non sono sicuro, non ho mai provato). Non è detto infatti che il risultato della tua query sia lo stesso e quindi IMHO è giusto che rifaccia la query.
Le politiche di cache meglio farsele per conto proprio...

Ho sperato che fosse proprio perché avevo provato una ricerca non per chiave. Ho modificato il codice perché usasse la chiave ma il profiler ha sentenziato ancora la doppia query. Peccato. Grazie comunque per il suggerimento.

E via di cache personalizzata...

Ciao
andrewz [MVP] [Staff] wrote:
Ho modificato il codice perché usasse la chiave ma il profiler ha sentenziato ancora la doppia query. Peccato.

sono d'accordo con Cristian e sarebbe stato un errore il contrario. tu ragioni nell'ottica di un'applicazione web "normale", dove c'è poca concorrenza sui dati, ma ce ne sono tante, anche non web, dove i dati cambiano con una frequenza molto ma molto elevata. un comportamento del genere, di default, sarebbe un grave errore di progettazione, imho. ed è giusto che se vuoi tu sia in grado di tenerlo in cache, ma è una scelta che devi fare tu, non deve arrivarti dal cielo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
No, non pensavo alle webapplication ma ad altri ORM che offrono nativamente un minimo di cache che permette di non avere una doppia query uguale nell'arco di un microsecondo (Nhibernate, tanto per dire il rivale più famoso, lo offre nativamente con una riga di codice).

Credo che in futuro vedremo altri provider per l'EF che implementaranno la cache.

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.