當運行嘗試將Double.Parse 應用於資料庫上下文中的字串屬性的LINQ查詢時,使用者可能會遇到以下情況錯誤:
「LINQ to Entities 無法辨識「Double Parse(System.String)」方法,且此方法無法轉換為儲存運算式。」
實體框架(EF) 旨在將LINQ 查詢轉換為可以在資料庫上執行的SQL 指令。但是,Double.Parse 方法不是有效的 SQL 函數。因此,EF 無法將其轉換為 SQL 並成功執行查詢。
要解決此問題,您需要建立執行與 Double.Parse 相同操作的自訂方法,並進行EF 知道它,以便可以將其轉換為 SQL。
第1 步:定義自訂函數
在與資料上下文相關的實體資料模型(EDMX) 檔案中,在
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String" /> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
此函數告訴EF 如何將字串值轉換為SQL 中的雙精確值。
第2 步:實作自訂方法
在定義資料上下文的分部類別中,建立一個與您在EDMX 中定義的函數簽章相符的方法檔:
public partial class MyDataContext { [EdmFunction("YourModel", "ParseDouble")] public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); } }
第3 步:在LINQ查詢中使用自訂函數
現在您可以在LINQ 查詢中使用ParseDouble 函數:
var query = context.MyEntities .Select(e => new { DoubleValue = ParseDouble(e.StringValue) });
透過執行下列步驟,您可以啟用EF 將使用Double.Parse 的LINQ 查詢轉換為有效的SQL,解決了「LINQ to Entities 無法辨識該方法」錯誤。
以上是如何解決'LINQ to Entities 無法辨識方法'Double Parse(System.String)'”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!