J'ai l'entité "Idées", qui a la collection d'entités enfant "ChildIdeas". J'ai besoin de charger la liste d'idées et le compte de "ChildIdeas" (seulement compter!). je peux faire:Entity Framework, optimisation des performances
chargement désireux
from i in _dataContext.Ideas.Include("ChildIdeas") ...
avantages: toutes les données nécessaires ont par une demande; inconvénients: charger des données inutiles. J'ai besoin que le nombre de ChildIdeas, pas ChildIdeas liste complète
chargement explicite
from i in _dataContext.Ideas ...
idea.ChildIdeas.Loading()
avantages: none; inconvénients: de nombreuses demandes (ideas.count + 1) au lieu d'une, charge les données inutiles
demandes indépendantes
from i in _dataContext.Ideas ...
_repository.GetCountChildIdeas(idea.ID);
Avantages: charge uniquement les données nécessaires; inconvénients: beaucoup de demandes (ideas.count + 1) au lieu d'un
tous les 3 types ont des inconvénients. Peut-être existe-t-il un moyen de charger uniquement les données nécessaires? Si oui - qu'est-ce que c'est, si non - quel est le meilleur moyen pour cette affaire?
[AJOUTÉE] après le test de charge (pour 1 utilisateur) Je suis chargement de la page (en sec): désireux Idées d'enfants - 1,31 s explicites Idées d'enfants - 1,19 sec des demandes externes - 1.14 sec
si , la façon avide pour mon cas est le pire ... Pourquoi même manière explicite est meilleure?
J'ai ajouté votre exemple concernant la duplication de données de chargement désirée (http://stackoverflow.com/questions/5521749/how-many-include-i-can-use-on-objectset-in-entityframework-to-retain-performance/5522195 # 5522195) comme explication possible du fait que OP a mesuré des performances plus lentes avec un chargement plus rapide qu'explicite. – Slauma
Si je comprends bien, nous pouvons simplement étendre la classe Ideas à une autre propriété ... –
Non, vous ne pouvez pas parce que la projection n'est pas possible à la classe mappée. –