對 LINQ to Entities 中的「方法『System.String ToString()』無法辨識」進行故障排除
資料庫遷移專案經常會遇到令人沮喪的「LINQ to Entities 無法辨識方法『System.String ToString()』方法」錯誤。 發生這種情況是因為 LINQ to Entities 無法將 LINQ 查詢中的 ToString()
方法呼叫轉換為與資料庫相容的表達式。 當直接在 LINQ 查詢中的字串欄位上使用 ToString()
時,問題尤其會出現。
解:預處理字串轉換
最簡單的修復方法是避免在 LINQ 查詢本身內使用 ToString()
。 相反,應預先執行字串轉換,並將結果指派給變數。 這將字串操作與資料庫查詢翻譯分開。 例:
<code class="language-csharp">string strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
透過預先轉換字串,ToString()
在 LINQ 查詢轉換為 SQL 之前執行,從而防止錯誤。
替代方案:實體框架的 SqlFunctions(更高版本)
較新的實體框架版本透過 SqlFunctions
幫助器類別提供了更優雅的解決方案。 此類別提供了專門為在 LINQ 查詢中使用而設計的 ToString()
方法,從而消除了對臨時變數的需要。 這允許更緊湊和可讀的程式碼。
以上是為什麼 LINQ to Entities 會拋出「無法辨識方法'System.String ToString()'」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!