Join und Include in Entity Framework

.net c# entity-framework linq sql

Frage

Ich habe die folgende Abfrage von Linq zu Entitäten. Das Problem ist, dass es scheinbar nicht die "Tags" -Beziehung lädt, obwohl ich eine Sache dafür aufgenommen habe. Es funktioniert gut, wenn ich keine Tags beitrete, aber ich muss das tun.

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

Gibt es eine andere Möglichkeit, diese Frage zu stellen? Vielleicht aufteilen oder etwas?

Akzeptierte Antwort

Nun, das Include widerspricht dem Wo. Include sagt: "Alle Tags laden". Das Wo sagt: "Laden Sie einige Tags." Wenn ein Widerspruch zwischen der Abfrage und Include besteht, gewinnt die Abfrage immer.

So geben Sie alle Tags aus einem Element mit mindestens einem Tag == Text zurück:

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

(Nicht getestet, da ich keine Datenbank / Modell habe)

Hier ist ein wirklich gutes, kostenloses Buch zu LINQ .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum