2010-06-28 1 views
1

J'ai une application Web qui utilise LINQ-to-SQL. Il y a un problème très étrange, où une commande LINQ récupère les données qui sont censées être retournées par une autre requête totalement différente qui s'exécute dans un thread différent. Quelle pourrait être la cause de cela?LINQ-to-SQL récupération de données à partir d'une requête différente!

Plus précisément, un utilisateur accède à l'application de sa machine, l'ouverture d'une page donnée. En même temps, un autre utilisateur accède à une page différente de sa machine (différente). Une des requêtes lance une exception, tandis que l'autre renvoie les données de la première, qui provient d'une table très différente!

Le cas est toujours reproductible, chaque fois que nous insistons sur l'application de ces deux utilisateurs. J'ai vérifié mais je ne vois aucune variable partagée d'aucune sorte. Quoi d'autre pourrait être le problème? Que devrais-je rechercher?

Votre aide est vraiment apprécié.

Répondre

1

Des sons comme une connexion sont en train d'être réutilisés. Assurez-vous de ne pas les mettre en cache et créez-les toujours correctement, par exemple en this sample.

+0

C'est ce que j'ai essayé d'étudier la plupart de la journée, mais en vain. J'ai même essayé de créer un nouveau 'DataContext' avec chaque requête (pour l'une des pages), mais cela n'a pas corrigé le problème. Avez-vous une suggestion sur l'endroit où regarder? –

+0

Vous ne voulez pas recréer le 'DataContext' à chaque appel, car cela devrait être un" singleton ". Cela dit, quel code utilisez-vous pour vous connecter à la base de données? – Lucero

+0

Le 'DataContext' utilisé pour être injecté (en utilisant Unity), mais je l'ai juste changé à des fins de test. Pour me connecter à la base de données, je crée simplement un 'DataContext' avec un' SqlConnection' qui prend la chaîne de connexion. Cependant, il existe une autre partie (plus ancienne) de l'application qui utilise directement ADO.NET, chaque fois que vous créez (et fermez) une nouvelle connexion. –

0

Tu es sûr que ce n'est pas une question de la session plutôt qu'une question de LINQ? Les données demandées à une session asp.net mais transmises à une autre sonne comme si quelque chose se mélangeait là-bas.

Questions connexes