首頁 > 後端開發 > C++ > 為什麼實體框架會拋出「帶有語句主體的 lambda 表達式無法轉換為表達式樹」?

為什麼實體框架會拋出「帶有語句主體的 lambda 表達式無法轉換為表達式樹」?

Linda Hamilton
發布: 2024-12-31 08:45:13
原創
864 人瀏覽過

Why Does Entity Framework Throw

使用EntityFramework 時出現錯誤:「帶有語句主體的lambda 表達式無法轉換為表達式樹」

使用EntityFramework 的Select方法時,您可能會遇到錯誤:「帶有語句主體的lambda表達式無法轉換為表達式樹。

理解錯誤:

在提供的程式碼片段中:

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

    return new Obj() {
    Var1 = someLocalVar,
    Var2 = o.var2 };
});
登入後複製

lambda 表達式在傳回O​​bj 實例之前使用語句來宣告和使用局部變數someLocalVar。但是,EntityFramework 需要可以直接轉換為 SQL 的簡單表達式,以實現高效的資料庫執行。

解決方案:

要解決此錯誤,請透過刪除語句體並直接賦值:

Arr[] myArray = objects.Select(o => new Obj() {
    Var1 = o.someVar,
    Var2 = o.var2 
});
登入後複製

透過此修改,lambda 表達式只包含一個簡單的表達式,可以翻譯成表達式樹,程式碼就能編譯成功。

以上是為什麼實體框架會拋出「帶有語句主體的 lambda 表達式無法轉換為表達式樹」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板