Maison > développement back-end > C++ > Pourquoi Entity Framework lance-t-il « L'expression Lambda avec le corps de l'instruction ne peut pas être convertie en arbre d'expression » ?

Pourquoi Entity Framework lance-t-il « L'expression Lambda avec le corps de l'instruction ne peut pas être convertie en arbre d'expression » ?

Susan Sarandon
Libérer: 2024-12-29 08:01:10
original
163 Les gens l'ont consulté

Why Does Entity Framework Throw

Erreur du compilateur : "L'expression Lambda avec le corps de l'instruction ne peut pas être convertie en arbre d'expression"

Lorsque vous travaillez avec EntityFramework, vous pouvez rencontrer une erreur déclarant : "Une expression lambda avec un corps d'instruction ne peut pas être convertie en une arborescence d'expression." Cette erreur se produit lorsque vous tentez d'utiliser une expression lambda avec une instruction de bloc (également appelée instruction lambda) dans un contexte où seules les expressions lambda sont autorisées.

Le problème

Comme le suggère le message d'erreur, EntityFramework attend des expressions lambda, qui sont des expressions concises sans aucune instruction de bloc. Dans l'exemple fourni, l'expression lambda :

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

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
});
Copier après la connexion

contient une instruction block, ce qui en fait une instruction lambda. EntityFramework ne peut pas convertir cette expression en un formulaire adapté à l'exécution de requêtes de base de données.

La solution

Pour résoudre l'erreur, refactorisez votre expression lambda pour utiliser une expression lambda. Les expressions lambda sont des expressions sur une ligne qui renvoient directement une valeur sans utiliser d'instructions supplémentaires. Dans ce cas, vous pouvez réécrire le lambda comme suit :

Obj[] myArray = objects.Select(o => new Obj() { 
    Var1 = o.someVar,
    Var2 = o.var2 
});
Copier après la connexion

Cette expression lambda élimine l'instruction block et renvoie directement un nouvel objet Obj. Ce formulaire est compatible avec les attentes d'EntityFramework concernant les arbres d'expression et résoudra l'erreur de compilation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal