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