Maison > développement back-end > C++ > Pourquoi Entity Framework renvoie-t-il « Une expression lambda avec un corps d'instruction ne peut pas être convertie en arborescence d'expression » ?

Pourquoi Entity Framework renvoie-t-il « Une expression lambda avec un corps d'instruction ne peut pas être convertie en arborescence d'expression » ?

Linda Hamilton
Libérer: 2024-12-31 08:45:13
original
851 Les gens l'ont consulté

Why Does Entity Framework Throw

Erreur : "Une expression lambda avec un corps d'instruction ne peut pas être convertie en arbre d'expression" lors de l'utilisation d'EntityFramework

Lors de l'utilisation de la méthode Select d'EntityFramework , vous pouvez rencontrer l'erreur : "Une expression lambda avec un corps d'instruction ne peut pas être convertie en arborescence d'expression." Cette erreur se produit souvent lorsque l'expression lambda que vous fournissez contient un corps d'instruction au lieu d'une expression simple.

Comprendre l'erreur :

Dans l'extrait de code fourni :

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

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

L'expression lambda utilise un corps d'instruction pour déclarer et utiliser une variable locale someLocalVar avant de renvoyer une instance d'Obj. Cependant, EntityFramework attend des expressions simples qui peuvent être directement traduites en SQL pour une exécution efficace de la base de données.

Solution :

Pour résoudre cette erreur, simplifiez l'expression lambda en supprimant le corps de la déclaration et en attribuant directement les valeurs :

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

Avec cette modification, l'expression lambda ne contient qu'une expression simple qui peut être traduite en un arbre d'expression et le code sera compilé avec succès.

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