Le modèle contient 2 entités avec une relation plusieurs-à-plusieurs: CatalogueItems and Keywords.Entity Framework sélection many-to-many
On suppose que 2 variables sont définies:
ObjectQuery<Keyword> KW;
ObjectQuery<CatalogueItem> CI;
KW contient une requête pour sélectionner un ensemble de mots-clés. Je dois obtenir CI qui sélectionne tous les articles de catalogue qui ont au moins un mot-clé de KW.
Une chose importante: rien ne devrait être précalculé ou énuméré. L'énumération des mots-clés prend beaucoup de temps, mais l'interface utilisateur est basée sur l'affichage direct de CatalogItems. Une chose parfaite serait d'obtenir CI prêt pour l'exécution.
Merci. Cela fonctionne, mais trop lent. Une seule requête pour récupérer des mots-clés prend quelques secondes. Cette requête est en cours d'exécution ... Je ne sais pas. Je me suis perdu pendant 10 minutes et l'ai éteint. On dirait qu'il recalcule KW pour chaque catalogueItem. En outre, CatalogItems sont répétés dans les résultats. Distinct() n'aide pas du tout - l'application se bloque et ne donne aucun résultat dans un délai raisonnable. Je crois qu'il devrait y avoir une manière plus optimisée. – Sergey40a
Voir ma modification s'il vous plaît. – Svarog
La requête est comme "keyword.Value like @ 0 ou keyword.Value like @ 1 ...". La base de données possède une table de transition (ItemID, KeywordID) pour établir une relation many-to-many. Les index sont ok. Peut-être que SP est un meilleur moyen de mettre en œuvre cette ... Dommage – Sergey40a