Maison >développement back-end >C++ >Pourquoi ne puis-je pas convertir une expression Lambda avec un corps d'instruction en une arborescence d'expression dans Entity Framework ?
"Comprendre l'erreur "Une expression lambda avec un corps d'instruction ne peut pas être convertie en arbre d'expression" dans EntityFramework"
Le "A L'expression lambda avec un corps d'instruction ne peut pas être convertie en arbre d'expression" une erreur se produit lors de la tentative de conversion d'une expression lambda avec un corps d'instruction en arbre d'expression. Cette erreur survient généralement dans les scénarios Entity Framework, où des requêtes LINQ sont utilisées pour récupérer des données.
Une cause possible de cette erreur est lorsque Linq-To-SQL est utilisé, où seules des expressions simples peuvent être appliquées à l'objet immédiat. à droite du => opérateur. La raison de cette limitation est que ces expressions ne sont pas exécutées mais sont directement traduites en requêtes SQL.
Pour résoudre ce problème, refactorisez l'expression lambda pour exclure les corps des instructions. Par exemple, réécrivez le code suivant :
Obj[] myArray = objects.Select(o => { var someLocalVar = o.someVar; return new Obj() { Var1 = someLocalVar, Var2 = o.var2 }; }).ToArray();
En ce qui suit :
Arr[] myArray = objects.Select(o => new Obj() { Var1 = o.someVar, Var2 = o.var2 }).ToArray();
Cette modification supprime le corps de l'instruction, permettant la conversion de l'expression lambda en arbre d'expression et éliminant l'erreur.
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!