このエラーが MySQL から発生している場合は、次の 2 つのいずれかが発生しています。
- プロバイダーが正しく構成されていません。
- EF プロバイダーにバグがあります。
このエラーが MySQL EF プロバイダーから発生している場合は、次の 2 つのいずれかが発生しています。
- プロバイダーが正しく構成されていません。
- EF プロバイダーには制限があります。
SQL はプロバイダーによって生成されます。EDMXの ProviderManifestToken 属性を使用して、サーバー バージョン固有の SQL 生成を構成できます。これは、古いサーバー バージョンがサポートしていない SQL 機能を使用しないようにプロバイダーに指示する方法です。
一部の MySQL ストレージ エンジンは SQL 機能をサポートしていますが、他のストレージ エンジンはサポートしていない可能性があります。この場合、プロバイダーは、ほとんどのエンジンでサポートされている共通の機能サブセットを使用するか、ユーザーProviderManifestToken
が選択できるようにする必要があります。
ただし、バグのあるプロバイダーが単に間違った SQL を返す可能性もあります。この場合、更新を見つけるか、バグに関係するクエリを避ける必要があります。
更新: @Devart の回答に基づくと、これはプロバイダーの制限であり、MySQL の制限のために設計されているようです。EF は、ADO.NET 標準コマンド ツリーを生成します。これを SQL に変換するのはプロバイダーの責任です。EF が CCT でクロス/外部適用ノードを返す場合、Devart はこれを MySQL が処理できる SQL に変換する方法を見つけていないようです。したがって、MySQL はすべての EF クエリをサポートするタスクに対応していないか、MySQL の専門家 (私ではありません!) がクロス/アウター適用の行を適切に返すことができる MySQL 互換 SQL を生成する方法を Devart に示す必要があります。 CCT ノード。