2010-10-15 21 views
10

Si tengo un marco 4 contexto entidad, normalmente si he ejecutar una consulta como:Entity Framework 4 - evitar el almacenamiento en caché básica

db.Invoices.Where(I => whatever); 

y luego ejecutar otra cosa:

db.Invoices.Where(I => something_else); 

cualquier los objetos devueltos de la segunda consulta, que también se devolvieron desde el primero, no se cargarán desde la base de datos. EF solo tomará el objeto que ya tiene para esa clave.

Pregunta, ¿cuál es la mejor manera de desactivar esta característica? ¿Puedo decirle a EF que cargue todos y cada uno de los objetos que necesita de la base de datos sin excepción?

Gracias!

Respuesta

9

Debe cambiar la configuración de MergeOption para su entidad, p.

db.Invoices.MergeOption = MergeOption.OverwriteChanges; 

OverwriteChanges significa que los objetos siempre se cargan desde la fuente de datos. También puede usar NoTracking para deshabilitar el seguimiento por completo, lo que puede mejorar el rendimiento si no necesita realizar actualizaciones o reutilizar las consultas. El valor predeterminado es AppendOnly que tiene el comportamiento que ha observado.

Cuestiones relacionadas