41 votes

c# fonctionnant avec Entity Framework dans un serveur multi-thread

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 ??

12voto

Jason Points 125291

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.

2voto

Devin Points 457

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.

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