データベース コンテキストで文字列プロパティに 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) ファイルで、
<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 サイトの他の関連記事を参照してください。