ホームページ >バックエンド開発 >C++ >ステートメント本体を含むラムダ式を Entity Framework の式ツリーに変換できないのはなぜですか?

ステートメント本体を含むラムダ式を Entity Framework の式ツリーに変換できないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-03 11:40:40758ブラウズ

Why Can't I Convert a Lambda Expression with a Statement Body to an Expression Tree in Entity Framework?

"EntityFramework の「ステートメント本文を含むラムダ式は式ツリーに変換できません」エラーについて理解する"

The "Aステートメント本体を含むラムダ式を式ツリーに変換できません」というエラーが、ステートメント本体を含むラムダ式を式に変換しようとすると発生する 木。このエラーは通常、LINQ クエリを使用してデータを取得する Entity Framework シナリオで発生します。

このエラーの原因の 1 つは、単純な式のみをイミディエートに適用できる Linq-To-SQL が使用されている場合です。 => の右側オペレーター。この制限の理由は、これらの式が実行されず、SQL クエリに直接変換されるためです。

この問題の解決策として、ラムダ式をリファクタリングしてステートメント本体を除外します。たとえば、次のコードを書き換えます:

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

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

次のように:

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

この変更により、ステートメント本体が削除され、ラムダ式の式ツリーへの変換が可能になり、エラー。

以上がステートメント本体を含むラムダ式を Entity Framework の式ツリーに変換できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。