ホームページ > バックエンド開発 > C++ > 「LINQ to Entities がメソッド 'Double Parse(System.String)' を認識しません」を解決するにはどうすればよいですか?

「LINQ to Entities がメソッド 'Double Parse(System.String)' を認識しません」を解決するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-31 11:12:15
オリジナル
599 人が閲覧しました

How to Resolve

「LINQ to Entities は 'Double Parse(System.String)' メソッドを認識せず、このメソッドはストア式に変換できません」

問題

データベース コンテキストで文字列プロパティに Double.Parse を適用しようとする LINQ クエリを実行すると、次のような問題が発生する可能性があります。エラー:

「LINQ to Entities はメソッド 'Double Parse(System.String)' メソッドを認識せず、このメソッドはストア式に変換できません。」

問題

Entity Framework (EF) は、LINQ クエリをデータベース上で実行できる SQL コマンドに変換するように設計されています。ただし、Double.Parse メソッドは有効な SQL 関数ではありません。したがって、EF はこれを SQL に変換してクエリを正常に実行できません。

解決策

この問題を解決するには、Double.Parse と同じ操作を実行するカスタム メソッドを作成し、make する必要があります。 EF はそれを認識しているため、SQL に変換できます。

ステップ 1: カスタムを定義するFunction

データ コンテキストに関連付けられた Entity Data Model (EDMX) ファイルで、 内に次の関数定義を追加します。 element:

<Function Name="ParseDouble" ReturnType="Edm.Double">
  <Parameter Name="stringvalue" Type="Edm.String" />
  <DefiningExpression>
    cast(stringvalue as Edm.Double)
  </DefiningExpression>
</Function>
ログイン後にコピー

この関数は、SQL で文字列値を double 値に変換する方法を EF に指示します。

ステップ 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 が次を使用する LINQ クエリを変換できるようになります。 Double.Parse を有効な SQL に変換し、「LINQ to Entities がメソッドを認識しません」エラーを解決します。

以上が「LINQ to Entities がメソッド 'Double Parse(System.String)' を認識しません」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート