Entity Framework Bestellung Umfasst
Ich versuche, so etwas wie den folgenden zu arbeiten:
_dbmsParentSections = FactoryTools.Factory.PdfSections
.Include(x => x.Children.OrderBy(y => y.Order).ToList())
.Include(x => x.Hint).Include(x => x.Fields)
.Where(x => x.FormId == FormId && x.Parent == null)
.OrderBy(o => o.Order)
.ToList();
Den Teil, der die Ausnahme verursacht ist:
.Include(x => x.Children.OrderBy(y => y.Order).ToList())
EDIT:
Bei weiterer Beobachtung,
_dbmsParentSections.ForEach(x => x.Children = x.Children.OrderBy(y => y.Order).ToList());
haben den job für mich (nach der ersten Factory
nennen und ohne die Children.OrderBy
).
Vielen Dank für die Bereitstellung der Antwort, die Sie fand, war für mich aswell
github.com/aspnet/EntityFrameworkCore/issues/15171
github.com/aspnet/EntityFrameworkCore/issues/15171
InformationsquelleAutor Serj Sagan | 2013-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, Sie können nicht Sortieren Sie die Kinder-Kollektion in Ihrer Abfrage.
Entweder Sortieren nach der Abfrage, oder laden Sie die Kinder in einer zweiten Abfrage.
Ähnliche Frage-und Antwort - hier
Ist dies immer noch wahr mit EF, version 6.0 ?
InformationsquelleAutor Olav Nybø
Den extension-Methode
Include
ist eine bloße Hülle umDbQuery.Include
. Intern ist es nicht ausführen die Ausdrücke aber nur analysiert, d.h. es nimmt die Ausdrücke und konvertiert Sie in einen Pfad als string. Der Pfad wird verwendet als Eingabe fürDbQuery.Include
.Es wurde angefordert, bevor Sie zum verbessern der Funktionalität von
Include
z.B. erlauben teilweise geladen Sammlungen, darunter eineWhere
- Klausel. Bestellung kann ein change-request. Aber wie Sie sehen, weil das interne funktionieren derInclude
den ganzen Mechanismus neu konstruiert, die zur Durchführung solcher Verbesserungen. Ich sehe es nicht auf der aktuellen Fahrplan so kann es eine Weile dauern...InformationsquelleAutor Gert Arnold
Wird dies nie gona Arbeit. EF enthalten ist, versuchen zu verstehen und übersetzen Sie alles zu SQL, aber Sie wollen zu viel. Laden Sie alle Personen ohne Sortierung und .ToList()-ing und schreiben Sie eine Erweiterungsmethode für IEnumerable um eine geordnete Folge.
InformationsquelleAutor Peter Kiss
Ich diesen code verwenden, por, um das zählen, über eine select-und eine Funktion, um die Sammlung.
Ist nicht die beste aber funktionieren, wenn subcollection ist klein
InformationsquelleAutor FRL
In der Regel, wenn man mit einem Haufen gehört, es ist, weil Sie benötigen, um Zugriff auf die untergeordneten Eigenschaften in einer Ansicht. Was ich zu tun ist, um das Kind Sammlung, wenn ich zugreifen zu können, müssen Sie es in einer Ansicht.
Ich könnte zum Beispiel bauen einige Include-Anweisungen für ein master - /detail-Formular. Es macht keinen Sinn, die Bestellung dies bei der ersten EF-Abfrage. Stattdessen, warum nicht, um diese untergeordneten Einträge in der view-Ebene, wenn Sie tatsächlich Zugriff auf Sie?
Hätte ich vielleicht eine Umfrage mit mehreren Fragen. Wenn ich möchte die Fragen in einer bestimmten Reihenfolge zu tun in der Teilansicht Niveau, wenn ich bin vorbei an dem Modell Kind Sammlung der Teilansicht.
InformationsquelleAutor Charles Owen
Je nach Anwendungsfall können Sie nicht brauchen, zu laden, die in separaten Abfragen oder Sortieren danach.
In meinem Fall brauchte ich Sie bestellt, wenn die Schleife in den Blick, so dass ich nur dort bestellt
InformationsquelleAutor Иво Недев
Sollten Sie nicht konvertieren
IQueryable
TypIEnumerable
- und call -Include
weilInclude
ist nicht unterstützt durchIEnumerable
geben.Kurz, nie nennen, Gehören nach
ToList
Include
vor derToList
InformationsquelleAutor user6314169