Rejoindre et inclure dans Entity Framework

.net c# entity-framework linq sql

Question

J'ai la requête suivante de linq aux entités. Le problème est qu'il ne semble pas charger la relation "Tags" même si j'ai inclus une chose pour elle Cela fonctionne bien si je ne me joins pas aux tags mais je dois le faire.

            var items = from i in db.Items.Include("Tags")
                        from t in i.Tags
                        where t.Text == text
                        orderby i.CreatedDate descending
                        select i;

Existe-t-il un autre moyen de poser cette question? Peut-être divisé ou quelque chose?

Réponse acceptée

Eh bien, l'inclusion contredit le où. Inclure dit: "Chargez tous les tags". Le où dit, "Chargez des balises." Lorsqu'il y a une contradiction entre la requête et Include, la requête gagne toujours.

Pour renvoyer toutes les balises de tout article avec au moins une balise == texte:

        var items = from i in db.Items.Include("Tags")
                    where i.Tags.Any(t => t.Text == text)
                    orderby i.CreatedDate descending
                    select i;

(Non testé, car je n'ai pas votre base de données / modèle)

Voici un très bon livre gratuit sur LINQ .



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow