Ich habe eine einfache Tabellenstruktur von Diensten mit jeweils einer Reihe von Einrichtungen. In der Datenbank ist dies eine Service
-Tabelle und eine Facility
-Tabelle, wobei die Facility
-Tabelle einen Verweis auf eine Zeile in der Service-Tabelle hat.
In unserer Anwendung haben wir die folgende LINQ-Funktion:
%Vor% Aber aus Gründen, die ich nicht kontrollieren kann, wird der Quellsatz vor dem Aufruf von Where
auf ein Nicht-Entitätsobjekt projiziert:
Aber das löst die folgende Ausnahme ohne innere Ausnahme aus:
EntityCommandCompilationException: The nested query is not supported. Operation1='GroupBy' Operation2='MultiStreamNest'
Durch das Entfernen von Where
funktioniert es jedoch, was mich glauben lässt, dass es nur in dieser spezifischen Kombination von Methodenaufrufen ist:
Gibt es eine Möglichkeit, die obige Aufgabe zu erfüllen: Wählen Sie ein Nicht-Entitätsobjekt aus, und verwenden Sie dann Where
und GroupBy
auf dem resultierenden abfragbaren Objekt? Hinzufügen von ToList
nach dem Select
funktioniert, aber die große Quellenmenge macht dies undurchführbar (es würde die Abfrage in der Datenbank ausführen und dann die Gruppierungslogik in C # erstellen).
Diese Ausnahme stammt von diesem Code in der EF-Quelle ...
%Vor%Ich muss zugeben: Es ist nicht offensichtlich, was hier passiert, und es gibt kein technisches Designdokument, das alle Strategien von EF zum Erstellen von Abfragen offenlegt. Aber dieses Stück Code ...
%Vor% Gibt einen kleinen Blick hinter die Vorhänge. Ich habe gerade einen OrderBy
in einem Fall von meinem eigenen versucht, der genau dein reproduziert, und es hat funktioniert. Also ich bin mir ziemlich sicher, wenn du es tust ...
Die Ausnahme wird weg sein.
Tags und Links c# entity-framework linq linq-to-entities