Oracle Database Provider и dotConnect for Oracle - ›как заставить их генерировать SQL, совместимый с версией Oracle, с которой они связаны?

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

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

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

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

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

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


person Community    schedule 09.07.2015    source источник


Ответы (1)


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

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

person Christian Shay    schedule 09.07.2015