Heim >Backend-Entwicklung >C++ >Warum verursacht mein Lambda-Ausdruck mit einem Anweisungstext einen Fehler im Entity Framework?

Warum verursacht mein Lambda-Ausdruck mit einem Anweisungstext einen Fehler im Entity Framework?

DDD
DDDOriginal
2024-12-31 19:42:09951Durchsuche

Why Does My Lambda Expression with a Statement Body Cause an Error in Entity Framework?

Lambda-Ausdruck mit Anweisungskörperfehler in EntityFramework

In EntityFramework tritt beim Arbeiten mit Lambda-Ausdrücken häufig ein Fehler auf:

"Ein Lambda-Ausdruck mit einem Anweisungskörper kann nicht in einen Ausdruck umgewandelt werden Baum.“

Dieser Fehler tritt auf, wenn ein Lambda-Ausdruck Anweisungen anstelle eines Ausdrucks enthält. In EntityFramework werden Lambda-Ausdrücke verwendet, um Bedingungen oder Transformationen innerhalb von Abfragen anzugeben. Ausdrücke dürfen jedoch keine Anweisungen enthalten, die Variablen ändern oder Aktionen ausführen.

Beispiel:

Der folgende Codeausschnitt löst den Fehler aus:

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

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
}).ToArray();

Erklärung:

In diesem Beispiel verwendet der Lambda-Ausdruck einen Anweisungskörper zum Zuweisen Geben Sie einen Wert an die lokale Variable someLocalVar an, bevor Sie ein Objekt zurückgeben. Dieser Anweisungskörper kann jedoch nicht in einen Ausdrucksbaum zur Ausführung durch EntityFramework konvertiert werden.

Lösung:

Um diesen Fehler zu beheben, schreiben Sie den Lambda-Ausdruck so um, dass er nur enthält Ausdrücke. In diesem Fall bedeutet dies, den Anweisungskörper zu entfernen und das Obj-Objekt direkt zu erstellen:

Arr[] myArray = objects.Select(o => new Obj() { 
    Var1 = o.someVar,
    Var2 = o.var2 
}).ToArray();

Jetzt besteht der Lambda-Ausdruck nur noch aus einem Ausdruck und kann zur Verarbeitung durch EntityFramework in einen Ausdrucksbaum umgewandelt werden.

Das obige ist der detaillierte Inhalt vonWarum verursacht mein Lambda-Ausdruck mit einem Anweisungstext einen Fehler im Entity Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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