2010-03-03 3 views
0

J'ai un contexte LINQ TO SQL que j'ai créé et qui appelle un proc stocké. Lorsque je parcours le scénario ISingleResult, il crée des entités à la volée pendant que le DataReader sous-jacent lit les résultats ou met tout en œuvre dans les entités avant que l'appel de fonction ne revienne. Fondamentalement ce qui se passe est que je travaille avec un proc stocké qui peut parfois renvoyer des dizaines de milliers d'enregistrements alors que la plupart du temps il ne renvoie que quelques milliers d'enregistrements. Est-ce que cela chargerait tout dans la mémoire à la fois ou serait-il chargé un à la fois pendant que je la boucle ??Comment les appels de procédures stockées LINQ TO SQL fonctionnent-ils?

Répondre

4

La procédure stockée sera appelée lorsque vous énumérez le résultat, de sorte que l'exécution est différée. Cependant, il n'est pas paresseusement chargé. C'est-à-dire, une fois que vous avez énuméré le résultat de votre procédure stockée, vous allez effectivement exécuter la procédure stockée dans son intégralité et tous les résultats seront ramenés.

Si vous liez les résultats de votre procédure stockée à une classe de modèle de données, qui prend en charge le chargement différé sur ses éléments enfants, vous obtenez un chargement paresseux sur les propriétés de cette classe.

Questions connexes