Fehler: „Ein Lambda-Ausdruck mit einem Anweisungskörper kann nicht in einen Ausdrucksbaum konvertiert werden“ bei Verwendung von EntityFramework
Bei Verwendung der Select-Methode von EntityFramework , kann es zu folgender Fehlermeldung kommen: „Ein Lambda-Ausdruck mit einem Anweisungstext kann nicht in einen Ausdrucksbaum konvertiert werden.“ Dieser Fehler tritt häufig auf, wenn der von Ihnen bereitgestellte Lambda-Ausdruck einen Anweisungstext anstelle eines einfachen Ausdrucks enthält.
Den Fehler verstehen:
Im bereitgestellten Codeausschnitt:
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; });
Der Lambda-Ausdruck verwendet einen Anweisungskörper, um eine lokale Variable someLocalVar zu deklarieren und zu verwenden, bevor eine Instanz von Obj zurückgegeben wird. EntityFramework erwartet jedoch einfache Ausdrücke, die für eine effiziente Datenbankausführung direkt in SQL übersetzt werden können.
Lösung:
Um diesen Fehler zu beheben, vereinfachen Sie den Lambda-Ausdruck, indem Sie das entfernen Anweisungskörper und direkte Zuweisung der Werte:
Arr[] myArray = objects.Select(o => new Obj() { Var1 = o.someVar, Var2 = o.var2 });
Mit dieser Modifikation enthält der Lambda-Ausdruck nur einen einfachen Ausdruck, der in einen Ausdruck übersetzt werden kann Baum, und der Code wird erfolgreich kompiliert.
Das obige ist der detaillierte Inhalt vonWarum gibt Entity Framework die Fehlermeldung „Ein Lambda-Ausdruck mit einem Anweisungstext kann nicht in einen Ausdrucksbaum konvertiert werden' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!