2010-08-14 19 views
1

Récemment, j'ai implémenté Linq to SQL dans une classe statique dans mon projet ASP.Net qui est une classe utilitaire pour obtenir des informations sur le site charge. Quand j'ai utilisé le datacontext linqtosql statique, j'ai obtenu l'erreur ci-dessus uniquement dans l'environnement en direct, mais je n'ai jamais eu ce problème sur les sites UAT ou QA. (Cela signifie que ce problème ne se produit que lorsqu'il y a beaucoup de charge).LINQ to SQL - Il y a déjà un lecteur de données ouvert associé à cette commande qui doit être fermé en premier

donc j'ai cherché sur Google et trouvé cet article here. Donc ce que j'ai fait, c'est que j'ai fait mes variables de données au niveau de la page et les ai transmises aux méthodes statiques chaque fois que je les appelle. est ce que j'ai fait était correct, cela va résoudre ce problème?/

Répondre

2

Dans ASP.Net chaque requête est un thread séparé. Donc, si vous utilisez une ressource statique, vous devez gérer la concurrence. Dans votre cas, il semble que deux gestionnaires de données utilisent la même connexion. Comme votre classe est statique, lorsque le serveur est lourdement chargé, il peut arriver que deux requêtes utilisent le même datacontext en même temps.

Si vous avez vraiment besoin d'une ressource statique, vous devez utiliser le lock statement pour vous assurer qu'une seule requête accède en même temps à la ressource.

+0

Eh bien, si l'autre objet n'est pas libéré rapidement? encore mon application va entrer dans un problème droit? .. je suppose que je dois aller avec une ressource non statique pour cela> – Aneef