Как мне использовать Oracle из .NET?

К сожалению, я пытаюсь использовать Oracle из .NET, и это похоже на возвращение к 1997 году. Правильное объяснение является признаком слабости, и переменные реестра и среды, похоже, имеют свои особенности.

Так вот, как далеко я продвинулся.

Я заполнил огромную анкету о своей жизни на Oracle.com и скачал

ODBC Windows 64-bit Instance Client, 11.2.0.3.0 и разархивировал его в папку. Basic Windows 64-bit Instant Client, 11.2.0.3.0 и распакуйте его в ту же папку, что и выше.

Я запустил установку .exe (без MSI, помните, что это 1997).

Я добавил переменную среды TNS_NAMES, указывающую на корпоративный файл TNSNames.ora на общем сетевом ресурсе, настроил быстрый DSN в Панели управления и запустил тест - это сработало!

Затем я скачал версию XCOPY последней версии ODP.NET для .NET 4.0 и скопировал ее в папку «Зависимости» в рабочей области управления исходным кодом.

Я добавил ссылку из моего проекта вDependencies\odp.net4\odp.net\bin\4\Oracle.DataAccess.dll

Я прочитал, что мне нужно сообщить управляемому персоналу ODP.NET, где он может найти свои неуправляемые библиотеки Oracle, что, как я предполагаю,Dependencies\odp.net4\bin\OraOps11w.dll но это может быть где-то другие двоичные файлы Oracle?

Теперь я устанавливаю параметр файла конфигурации с именем DllPath. К сожалению, документы Oracle, похоже, не осознают, что файлы конфигурации .NET нуждаются в подключении своих разделов в разделе configSections.

Вот раздел файла конфигурации.

<oracle.dataaccess.client>
  <add key="DllPath" value="D:\Trunk\Dependencies\odp.net4\bin" />
</oracle.dataaccess.client>

Что идет в configSection? Несколько потоков, которые я обнаружил в этом, дают пример и затем говорят «я не знаю, какой тип = должен быть», что является основным битом!

Кто-нибудь может мне посоветовать? Кто-нибудь знает ссылку на Руководство для чайников по запросу Oracle View из .NET?

Могу ли я что-то сделать в 1997 году, чтобы перестать использовать Oracle в 2012 году?

UPDATE

Просто быстрое обновление. Я скопировал файл OraOps11w.dll в папку моего выходного лотка и удалил все изменения в файле web.config, которые я добавил ранее.

Теперь я получаю следующую ошибку, которую я исследую.

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Некоторые другие форумы говорят о регистрации Oracle.DataAccess.dll в GAC, чего я стремлюсь избежать, и я не вижу, какая разница будет в любом случае, но я попробую.

UPDATE 2

Регистрация библиотеки Oracle.DataAccess.dll в GAC не имела никакого значения, и я отменил ее регистрацию.

Конец рабочей недели для меня, и мне нужно сесть на поезд, но я отправил письмо другой команде разработчиков и надеюсь, что они уже сражались в этой битве (и не использовали ночные выдержки, как все).

UPDATE 3

Сегодня утром я скачал и настроил IIS Express 8.0 RC, который имеет 64-битную версию. 64-разрядная версия не поддерживается VS2010, поэтому ее необходимо запускать из командной строки. Это было довольно просто, посмотрев в диспетчере задач, я смог увидеть, какая командная строка VS использует для iisexpress.exe * 32.

К сожалению, я получаю эту ошибку при просмотре моего сайта на 64-битном IIS Express.

Handler "ExtensionlessUrl-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

Это слишком сложная проблема, поэтому я попытаюсь использовать 32-разрядную версию ODP.NET.

UPDATE 4

Я скачал полную версию 32-битной версии, но испугался, увидев универсальный установщик Oracle. Это выглядит слишком 90-ыми, чтобы доверять моей драгоценной коробке разработчика. Таким образом, я использую 32-битную XCopy. клиент, это позволяет мне открыть домашнюю страницу моего сайта, поэтому ссылки работают. Спасибо за те, которые предложили проблему несовпадения архитектуры 32/64.

Теперь я смотрю на эту ошибку при создании экземпляра нового OracleConnection.

The provider is not compatible with the version of Oracle client

UPDATE 5 Я думаю, что я сделал это.

Итак, я скачал 32-битную версию 11g & quot; Instant Client & quot; и просто поместите его в мою папку \ Dependencies для кодовой базы транка решения. Я добавил эту папку в системную переменную среды% PATH%, а также поместил туда файл OraOps11w.dll.

Наконец, _oracleConnection = new OracleConnection (connectionString) не выдает! Теперь я должен убедиться, что у меня есть бутылка Laphroaig на столе, когда я прихожу, чтобы развернуться в Prod.

Итак, подведем итог: для IIS Express 7.5 (32-разрядный процесс) в Windows 7, 64:

Download and extract the 32-bit 11g "Instant Client" to some folder and add this location to your PATH. Oci.dll is the main Oracle client-side unmanaged library.

Download and extract the 32-bit ODP.NET to some folder.

Copy the OraOps11w.dll to the main folder in which the Instant Client resides (above).

Add a TNS_ADMIN environment variable pointing to a folder in which TNSNames.ora text file resides. This is like a hosts file and maps Oracle service names to server host names.

Close and re-open Visual Studio to ensure you pick-up the new environment variables, and add a reference to the Oracle.DataAccess.dll managed assembly in your ODP.NET folder.

Это должно быть так. Звучит довольно просто, когда знаешь как.

UPDATE 5.1

Расследование приведенной ниже ошибки, о которой я изначально не сообщал, так как был уверен, что это проблема с брандмауэром. Компания, в которой я работаю, имеет по две на каждой рабочей станции, но я только что открыл необработанный сокет для сервера Oracle, чтобы это не могло быть.

ORA-12541: TNS:no listener

Ответы на вопрос(5)

Ваш ответ на вопрос