首頁 > 後端開發 > C++ > 如何解決'LINQ to Entities 無法辨識方法'Double Parse(System.String)'”?

如何解決'LINQ to Entities 無法辨識方法'Double Parse(System.String)'”?

Linda Hamilton
發布: 2024-12-31 11:12:15
原創
598 人瀏覽過

How to Resolve

「LINQ to Entities 無法辨識「Double Parse(System.String)」方法,且此方法無法轉換為儲存運算式」

問題

當運行嘗試將Double.Parse 應用於資料庫上下文中的字串屬性的LINQ查詢時,使用者可能會遇到以下情況錯誤:

「LINQ to Entities 無法辨識「Double Parse(System.String)」方法,且此方法無法轉換為儲存運算式。」

問題

實體框架(EF) 旨在將LINQ 查詢轉換為可以在資料庫上執行的SQL 指令。但是,Double.Parse 方法不是有效的 SQL 函數。因此,EF 無法將其轉換為 SQL 並成功執行查詢。

解決方案

要解決此問題,您需要建立執行與 Double.Parse 相同操作的自訂方法,並進行EF 知道它,以便可以將其轉換為 SQL。

第1 步:定義自訂函數

在與資料上下文相關的實體資料模型(EDMX) 檔案中,在 中加入以下函數定義: element:

<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中文網其他相關文章!

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