2009-07-18 13 views
29

Estoy usando Entity Framework.Cómo hacer que Entity Framework cache algunos objetos

En mi base de datos se almacenan personas y países de sus orígenes. Cuando estoy cargando un objeto persona, no quiero saber cuál es el lugar de origen de cada persona. ¿Hay alguna manera de almacenar en caché la lista de países para que no haya solicitudes innecesarias?

+0

Topetón. ¿Ha cambiado algo con EF en más de 5 años, en relación con el almacenamiento en caché de la tabla de búsqueda? Específicamente, ¿EF ha integrado una forma de hacer esto? – RLH

Respuesta

40

Como Luhmann ya ha dicho, mi compañero Jarek tiene una excelente muestra del proveedor de caché para Entity Framework. De lo que él habla es here.

Sin embargo, a veces este enfoque es excesivo, y sospecho que los países de almacenamiento en caché es un buen ejemplo en el que el esfuerzo no vale la pena. Quizás sea mejor implementar algún tipo de almacenamiento en caché ad-hoc.

Si intentas hacer esto, el principal problema con el que te encontrarás es que una entidad Entity Framework instancia solo se puede adjuntar a un ObjectContext a la vez, lo que significa que si recibes solicitudes concurrentes (como en un sitio web) tendrá problemas si solo agarras elementos del caché y los usas a ciegas.

Lo que necesita es un caché de clonación, es decir, cuando lo agarra del caché lo clona.

que arme una punta que ilustra cómo hacer esto Tip 14 - How to cache Entity Framework Reference Data

Esperanza esto ayuda

Alex James

Marco de la entidad del equipo de Microsoft.

+0

desde el momento en que escribiste ese consejo hasta ahora, ¿hay una manera más directa de almacenar en caché los datos de referencia con EF 4.1? – Romias

+3

Buen consejo Alex, ¿hay mejores enfoques con los nuevos lanzamientos de EF? – NoChance

0

Me gustaría poner en caché esa lista de países primero y asignar el país apropiado a cada persona recuperada. Si decide también almacenar en caché personas, debe hacer que dependan de los países almacenados en caché e invalidarlos cuando realice una actualización de la lista de países/países.

Cuestiones relacionadas