Если эта ошибка исходит от MySQL, произошло одно из двух:
- Вы неправильно настроили провайдера.
- В вашем провайдере EF есть ошибка.
Если эта ошибка исходит от вашего провайдера MySQL EF, то произошло одно из двух:
- Вы неправильно настроили провайдера.
- У вашего провайдера EF есть ограничение.
SQL генерируется провайдером. Вы можете настроить генерирование SQL для конкретной версии сервера через атрибут ProviderManifestToken в EDMX . Вот как вы говорите провайдеру не использовать функции SQL, которые не поддерживаются в более старых версиях сервера.
Возможно, что некоторые механизмы хранения MySQL поддерживают функции SQL, которые другие не поддерживают. В этом случае провайдеру потребуется либо использовать общее подмножество функций, поддерживаемых большинством механизмов, либо использовать ProviderManifestToken
, чтобы вы могли выбрать.
Однако также возможно, что провайдер с ошибками просто возвращает неверный SQL. Если это так, то вы должны либо найти обновление, либо избегать запросов, которые касаются ошибки.
Обновление: Судя по ответу @ Devart, кажется, что это ограничение провайдера, который разработан из-за ограничений MySQL. EF создаст каноническое дерево команд ADO.NET. Поставщик несет ответственность за перевод этого на SQL. Если EF возвращает перекрестный / внешний узел применения в CCT, кажется, что Devart не нашел способа перевести это в SQL, который может обрабатывать MySQL. Так что либо MySQL просто не справляется с задачей поддержки всех запросов EF, либо кто-то, кто является экспертом MySQL (не я!), Должен показать Devart, как создавать MySQL-совместимый SQL, который может правильно возвращать строки для перекрестного / внешнего применения. Узлы CCT.