ホームページ >データベース >mysql チュートリアル >LINQ to Entities が `ToString()` の変換に失敗する理由とその修正方法
ToString()
メソッド変換の問題への対処問題:
ToString()
メソッドを組み込んだ LINQ to Entities クエリを実行すると、「LINQ to Entities は 'System.String ToString()' メソッドを認識できません。このメソッドはストア式に変換できません」というエラーが発生することがよくあります。 。」 これは、ToString()
が SQL に直接変換できないために発生します。
根本原因:
Entity Framework (EF) は、データベース実行のために LINQ クエリを SQL に変換します。 ToString()
は SQL 関数ではなく .NET メソッドであるため、変換プロセスは失敗します。
解決策:
最も信頼できる解決策は、LINQ クエリ内で直接 ToString()
を呼び出さないようにすることです。 代わりに、ToString()
の結果をクエリで使用する前に変数に保存します。これにより、EF はクエリを適切に変換できるようになります。
<code class="language-csharp">string strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
EF Core の代替:
EF Core の新しいバージョンでは SqlFunctions.StringConvert
メソッドが提供され、LINQ クエリ内の文字列変換により直接的なアプローチが提供され、多くの場合、一時変数の必要性がなくなりました。 ただし、可変アプローチは依然として堅牢で広く互換性のあるソリューションです。
以上がLINQ to Entities が `ToString()` の変換に失敗する理由とその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。