Поставщик базы данных Oracle и dotConnect для Oracle -> как заставить их генерировать SQL, совместимый с версией Oracle, с которой они связаны?

Я использую.NET Entity Framework с Oracle.

Существует два основных поставщика базы данных Oracle: один является официальным выпуском от Oracle ("ODP" - поставщик базы данных Oracle), а другой - "Devart dotConnect for Oracle".

В документации обоих провайдеров написано, что они поддерживают Oracle 12c, 11g, 10g...

Но если я использую любой из них с Oracle 11g, я вижу, что они оба генерируют команды, поддерживаемые только Oracle 12c и новее. Пример: НАРУЖНОЕ ПРИМЕНЕНИЕ.

Есть ли какая-либо конфигурация для того, чтобы сказать поставщику, что я хочу, чтобы он использовал команды SQL в соответствии с версией СУБД, к которой они подключены?

Провайдер не должен делать это автоматически?

1 ответ

Генерация ключевого слова APPLY на самом деле выполняется не драйвером Oracle EF, а самой Entity Framework. Насколько я понимаю, дерево разбора, которое они дают провайдеру, в значительной степени заставляет его использовать APPLY. И если он не существует с базой данных, которую вы используете, то вы получите ошибку. Это не специфическая ситуация для Oracle. Более старые версии SQL Server и других поставщиков баз данных также не имеют этого ключевого слова.

Oracle отреагировал на эту ситуацию, добавив ключевое слово в Oracle 12c. Это верно, приложение было добавлено специально для EF. Вы можете зайти в Google и найти в Интернете несколько статей, в которых предлагается, как писать EF-код, который минимизирует генерацию APPLY.

Другие вопросы по тегам