Entity Framework の変換の問題: Double.Parse を変換できない
LINQ to Entities を使用する場合、すべてのメソッドが変換できるわけではないことに注意することが重要です。 LINQ to Objects でサポートされているクエリは、SQL クエリに直接変換できます。よくあるエラーの 1 つは、LINQ to Entities ステートメントで Double.Parse() を使用できないことです。
Double.Parse() の問題の解決
この問題を解決するには、*.edmx で定義された関数を使用して、解析を実行し、有効な SQL に変換するカスタム メソッドを定義できます。 file.
例:
SQL 変換を定義します:
*. edmx ファイルに次の関数を追加します定義:
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String"></Parameter> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
コードでカスタム メソッドを作成します:
ObjectContext 部分クラス (通常は EDMX によって生成される) に、次のコードを追加します。次のメソッド:
public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); }
このメソッドは、実行中にスタブとして機能します。 LINQ クエリは、EDMX で定義された SQL CAST ステートメントに変換されます。
例 (カスタム メソッドの適用):
LINQ 内ステートメントでは、Double.Parse() のインスタンスを YourObjectContext.ParseDouble() に置き換えてカスタム メソッドを利用し、変換を可能にします。
追加の考慮事項:
特定のコンテキストで Entity Framework でサポートされていない場合、Math.Round() にも同様のアプローチが必要になる可能性があることに注意してください。 。 EDM 正規関数リストを使用して、定義する適切な SQL 関数を決定します。
以上がEntity Framework が Double.Parse() を変換できない問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。