Wenn dieser Fehler kommt von MySQL eines von zwei Dingen geschehen:
- Sie haben nicht den Provider korrekt konfiguriert ist.
- Ihr EF-Anbieter hat einen Fehler.
Wenn diese Fehler von MySQL-EF-Provider kommen, dann eines von zwei Dingen geschehen:
- Sie haben die Provider nicht richtig konfigurieren.
- Es gibt eine Einschränkung in Ihrem EF-Anbieter.
SQL wird vom Anbieter generiert. Sie können die serverversionsspezifische SQL-Generierung über die ProviderManifestToken attribute in EDMX konfigurieren. Auf diese Weise weisen Sie den Provider an, keine SQL-Funktionen zu verwenden, die ältere Serverversionen nicht unterstützen.
Es ist möglich, dass einige MySQL-Speicher-Engines SQL-Funktionen unterstützen, andere nicht. In diesem Fall müsste der Anbieter entweder eine gemeinsame Teilmenge der von den meisten Engines unterstützten Funktionen verwenden oder ProviderManifestToken
verwenden, um die Auswahl zu ermöglichen.
Es ist jedoch auch möglich, dass ein fehlerhafter Anbieter einfach falsches SQL zurückgibt. Wenn dies der Fall ist, müssen Sie entweder ein Update finden oder Anfragen vermeiden, die den Fehler betreffen.
Update: Basierend auf @ Devart Antwort, so scheint es, dass dies eine Einschränkung seitens des Providers ist, die aufgrund der Beschränkungen von MySQL ausgelegt ist. Die EF erstellt einen kanonischen ADO.NET-Befehlsbaum. Es liegt in der Verantwortung des Providers, dies in SQL zu übersetzen. Wenn die EF einen Cross/Outer-Apply-Knoten in der CCT zurückgibt, scheint Devart keine Möglichkeit gefunden zu haben, dies in SQL zu übersetzen, mit dem MySQL umgehen kann. Entweder ist MySQL einfach nicht in der Lage, alle EF-Abfragen zu unterstützen, oder jemand, der ein MySQL-Experte ist (nicht ich!), Muss Devart zeigen, wie MySQL-kompatibles SQL erzeugt wird, das Zeilen für das Cross/Outer-Apply korrekt zurückgibt CCT-Knoten.
seine nicht von Oracle unterstützt :( – gbjbaanb
+1 für die Grafik – thomaspaulb