Comment faire en sorte que Entity Framework mette en cache certains objets

.net entity entity-framework

Question

J'utilise Entity Framework.

Dans ma base de données sont des personnes enregistrées et le pays de leurs origines. Lorsque je charge un objet personne, je ne sais pas quel est le lieu d'origine de chaque personne. Existe-t-il un moyen de mettre en cache la liste des pays afin d'éviter les requêtes inutiles?

Réponse acceptée

Comme Luhmann l'a déjà indiqué, mon collègue Jarek dispose d'un excellent exemple de fournisseur de mise en cache pour Entity Framework. Dont il parle ici .

Cependant, cette approche est parfois exagérée et je soupçonne que la mise en cache de pays est un bon exemple où l'effort n'en vaut pas la peine. Il serait peut-être préférable de mettre en place une sorte de cache ad-hoc.

Si vous essayez de faire cela, le problème principal que vous rencontrerez est qu’une entité Entity Framework d’instance ne peut être attachée qu’à un ObjectContext à la fois, ce qui signifie que si vous recevez des demandes simultanées (comme sur un site Web), vous aurez des problèmes. il vous suffit de récupérer des objets dans la mémoire cache et de les utiliser à l'aveuglette.

Vous avez besoin d’un cache de clonage, c’est-à-dire que lorsque vous récupérez un élément du cache, il le clone.

J'ai rassemblé un conseil qui explique comment procéder. Conseil 14 - Mise en cache des données de référence Entity Framework

J'espère que cela t'aides

Alex James

Entity Framework Team Microsoft.


Réponse populaire

Vous pouvez consulter l'excellent wrapper de fournisseur de traçage et de mise en cache de Jaroslaw Kowalski pour Entity Framework .



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi