27 votes

Comment faire pour mettre en cache Entity Framework certains objets

J'utilise Entity Framework.

Dans ma base de données sont stockées les personnes et le pays d'origine. Quand je charge un objet personne, je ne veux pas savoir d'où vient chaque personne. Existe-t-il un moyen de mettre en cache la liste des pays afin qu'il n'y ait pas de demandes inutiles.

39voto

Alex James Points 15939

Comme Luhmann a déjà dit mon compagnon Jarek est un excellent exemple de la mise en Cache fournisseur d'Entity Framework. Dont il parle ici.

Cependant, parfois, cette approche est exagéré, et je soupçonne que la mise en cache des pays est un bon exemple où l'effort n'est pas la peine. Il peut-être mieux de mettre en œuvre une sorte d'ad-hoc, la mise en cache.

Si vous essayez de faire cela le principal problème que vous rencontrerez est qu'une instance de l'Entité Cadre entité ne peut être rattaché à un ObjectContext à la fois, ce qui signifie que si vous obtenez des demandes simultanées (comme dans un site web), vous aurez des problèmes est que vous venez de saisir les éléments à partir du cache et de les utiliser à l'aveuglette.

Ce que vous avez besoin est un clonage de cache, c'est à dire si lorsque vous prenez quelque chose à partir du cache des clones d'eux.

J'ai mis en place une astuce qui montre comment faire cette Astuce 14 - procédure de mise en cache d'Entité Cadre de Référence des Données

Espérons que cette aide

Alex James

Équipe D'Entity Framework De Microsoft.

8voto

Luhmann Points 3274

Vous pouvez jeter un œil aux excellents wrappers de fournisseurs de traçage et de mise en cache de Jaroslaw Kowalski pour Entity Framework .

0voto

user134706 Points 895

Je voudrais d'abord mettre en cache cette liste de pays et attribuer le pays approprié à chaque personne récupérée. Si vous décidez de mettre également en cache des personnes, vous devez les faire dépendre des pays mis en cache et les invalider lorsque vous effectuez une mise à jour de la liste des pays / pays.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X