OracleDataService
- это сервис данных для работы с Oracle Server напрямую, минуя ODBC; является реализацией абстрактного класса SQLDataService.
При указании OracleDataService в качестве сервиса данных используется строка ICSSoft.STORMNET.Business.OracleDataService, ICSSoft.STORMNET.Business.OracleDataService
.
Поскольку для ORACLE понятие “грязного чтения” и блокировок неактуально, то при настройке DRDataService также указывается строка ICSSoft.STORMNET.Business.OracleDataService, ICSSoft.STORMNET.Business.OracleDataService
.
Требования к наличию компонентов
- Если приложение использует .NET Framework версии ниже 4.0, то для работы с
OracleDataService
требуется наличие клиентского ПО Oracle. Данное требование обусловлено тем, что в данном случае для создания соединений с БД Oracle используется классSystem.Data.OracleClient.OracleConnection
. Существуют ограничения на именование каталогов, в которых размещается ПО, использующее ORACLE. Если ПО разместить в каталоге, в наименовании которого присутствуют спецсимволы (точки, скобки), то всё может перестать работать. Для исправления этой ситуации достаточно переименовать каталог. - Для .NET Framework начиная с версии 4.0 установка клиентского ПО Oracle не требуется.
Работа с соединениями осуществляется с помощью
Oracle.ManagedDataAccess.Client.OracleConnection
. В этом случае необходимо установить nuget-пакетOracle.ManagedDataAccess
.
Особенности функционирования
Как любой сервис данных, OracleDataService
поддерживает отображение типов данных с учётом особенностей их использования в конкретной СУБД. А также позволяет учесть следующие ключевые требования Oracle, в т.ч. синтаксические:
- Длина идентификатора, поддерживаемого ORACLE, ограничена 30 байтами. Причём данное ограничение действует как для имен объектов БД (т.е. учитывается при определении имен хранения объектов генератором
Oracle SQL Generator
и сервисом данныхOracleDataService
), так и для алиасов, используемых в запросах (учитываетсяOracleDataService
). При формировании короткого варианта имени идентификатор, создаваемый базовым методом, обрезается до требуемой длины и дополняется хэш-кодом для обеспечения уникальности. - Идентификаторы заключаются в двойные кавычки.
- Аналогом функции ifnull является функция NVL.
- Ограничение на количество строк в выборке, реализуемое с помощью ключевого слова
<nowiki>TOP</nowiki>
в базовомSQLDataService
, реализуется посредством задания ограничения наrownum
в выраженииWHERE
.
Регистронезависимость строк в запросах
Поиск строк в базах данных Oracle по-умолчанию является регистрозависимым, т.е., например, при выполнении запроса
SELECT * FROM Table1 WHERE Field1='что-то'
строки таблицы Table1, в которых Field1 имеет значение ‘Что-то’,’ЧТО-ТО’,…, в результирующую выборку не попадут.
Для организации поиска независимого от регистра следует воспользоваться параметром CaseInsensitive файла конфигурации.
См. также статью Обработка регистров в именах объектов для СУБД.