Heim > Backend-Entwicklung > C++ > Warum wirft Entity Framework die Meldung „Lambda-Ausdruck mit Anweisungstext kann nicht in Ausdrucksbaum konvertiert werden' aus?

Warum wirft Entity Framework die Meldung „Lambda-Ausdruck mit Anweisungstext kann nicht in Ausdrucksbaum konvertiert werden' aus?

Susan Sarandon
Freigeben: 2024-12-29 08:01:10
Original
163 Leute haben es durchsucht

Why Does Entity Framework Throw

Compiler-Fehler: „Lambda-Ausdruck mit Anweisungskörper kann nicht in Ausdrucksbaum konvertiert werden“

Beim Arbeiten mit EntityFramework kann ein Fehler auftreten mit der Aussage: „Ein Lambda-Ausdruck mit einem Anweisungshauptteil kann nicht in einen Ausdrucksbaum konvertiert werden.“ Dieser Fehler tritt auf, wenn Sie versuchen, einen Lambda-Ausdruck mit einer Blockanweisung (auch als Anweisungs-Lambda bezeichnet) in einem Kontext zu verwenden, in dem nur Ausdrucks-Lambdas zulässig sind.

Das Problem

Wie die Fehlermeldung vermuten lässt, erwartet EntityFramework Ausdrucks-Lambdas, bei denen es sich um prägnante Ausdrücke ohne Blockanweisungen handelt. Im bereitgestellten Beispiel enthält der Lambda-Ausdruck:

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
});
Nach dem Login kopieren

eine Blockanweisung, was ihn zu einem Anweisungs-Lambda macht. EntityFramework kann diesen Ausdruck nicht in eine Form konvertieren, die zum Ausführen von Datenbankabfragen geeignet ist.

Die Lösung

Um den Fehler zu beheben, überarbeiten Sie Ihren Lambda-Ausdruck, um einen Ausdrucks-Lambda zu verwenden. Ausdruckslambdas sind einzeilige Ausdrücke, die ohne Verwendung zusätzlicher Anweisungen direkt einen Wert zurückgeben. In diesem Fall können Sie das Lambda wie folgt umschreiben:

Obj[] myArray = objects.Select(o => new Obj() { 
    Var1 = o.someVar,
    Var2 = o.var2 
});
Nach dem Login kopieren

Dieser Lambda-Ausdruck eliminiert die Blockanweisung und gibt direkt ein neues Obj-Objekt zurück. Dieses Formular ist mit den Erwartungen von EntityFramework an Ausdrucksbäume kompatibel und behebt den Kompilierungsfehler.

Das obige ist der detaillierte Inhalt vonWarum wirft Entity Framework die Meldung „Lambda-Ausdruck mit Anweisungstext kann nicht in Ausdrucksbaum konvertiert werden' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage