Maison > développement back-end > C++ > Pourquoi mon expression Lambda avec un corps d'instruction provoque-t-elle une erreur dans Entity Framework ?

Pourquoi mon expression Lambda avec un corps d'instruction provoque-t-elle une erreur dans Entity Framework ?

DDD
Libérer: 2024-12-31 19:42:09
original
954 Les gens l'ont consulté

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

Expression Lambda avec erreur de corps de déclaration dans EntityFramework

Dans EntityFramework, une erreur courante rencontrée lors de l'utilisation d'expressions lambda est :

"Une expression lambda avec un corps de déclaration ne peut pas être convertie en expression tree."

Cette erreur se produit lorsqu'une expression lambda contient des instructions au lieu d'une expression. Dans EntityFramework, les expressions lambda sont utilisées pour spécifier des conditions ou des transformations dans les requêtes. Cependant, les expressions ne peuvent pas contenir d'instructions qui modifient des variables ou effectuent des actions.

Exemple :

L'extrait de code suivant déclenche l'erreur :

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

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

Explication :

Dans cet exemple, l'expression lambda utilise un corps d'instruction pour attribuer une valeur à la variable locale someLocalVar avant de renvoyer un objet. Cependant, ce corps d'instruction ne peut pas être converti en arbre d'expression pour exécution par EntityFramework.

Solution :

Pour résoudre cette erreur, réécrivez l'expression lambda afin qu'elle soit uniquement contient des expressions. Dans ce cas, cela signifie supprimer le corps de l'instruction et construire directement l'objet Obj :

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

Maintenant, l'expression lambda se compose uniquement d'une expression et peut être convertie en un arbre d'expression pour être traitée par EntityFramework.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal