EntityFramework 中的錯誤:「帶有語句主體的Lambda 表達式無法轉換為表達式樹」
收到錯誤「帶有a 的lambda 表達式」使用實體框架時,「語句體無法轉換為表達式樹」可能會令人困惑。讓我們澄清一下問題是什麼以及如何解決它。
嘗試執行包含語句正文(如問題中提供的語句正文)的 lambda 表達式時會發生錯誤。在實體框架中,lambda 表達式用於建立 LINQ 查詢,然後將其轉換為 SQL 語句以供資料庫執行。但是,lambda 表達式中的語句體(例如變數宣告和賦值)無法轉換為 SQL。
要解決此問題,建議使用更簡單的 lambda 表達式,直接傳回其值,而不需要額外的語句。以下是一個修正的範例:
Obj[] myArray = objects.Select(o => new Obj { Var1 = o.someVar, Var2 = o.var2 }).ToArray();
在這種情況下,lambda 表達式只是建立具有所需屬性的 Obj 類別的新實例。這可以轉換為資料庫可以理解和執行的表達式樹。請記住,在使用實體框架時,請確保資料庫查詢中使用的 lambda 表達式簡單且不包含複雜的語句。
以上是為什麼實體框架會拋出「帶有語句主體的 Lambda 表達式無法轉換為表達式樹」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!