Quelle est la meilleure pratique pour travailler avec le framework d'entité dans un serveur multi-thread ?
J'utilise le framework d'entité ObjectContext
pour gérer toutes mes actions de base de données, maintenant je sais que ce contexte n'est pas thread-safe, donc pour l'instant, quand j'ai besoin de l'utiliser pour effectuer certaines actions de base de données, je l'entoure de lock
déclaration pour être sûr. C'est comme ça que je dois faire ??
Réponses
Trop de publicités?C'est comme ça que je dois faire ??
Non. Au minimum, utilisez un contexte par thread mais je vous encourage fortement à penser un contexte comme une unité de travail, et donc à utiliser un contexte par unité de travail par thread.
A vous de définir "l'unité de travail" pour votre application. Mais n'utilisez pas
lock
pour utiliser un contexte sur plusieurs threads. Il n'évolue pas.
En règle générale, l'ObjectContext ne doit pas être utilisé globalement dans toute l'application. Vous devez créer fréquemment de nouveaux ObjectContexts et supprimer les anciens. Ils ne sont certainement pas non plus threadsafe. Si vous continuez à utiliser le même ObjectContext (selon la durée de vie de votre application), il est facile d'obtenir une exception de mémoire si vous modifiez des quantités massives de données, car les références aux entités que vous modifiez sont détenues par le contexte de l'objet.