Jak korzystać z Oracle z .NET?

Niestety, staram się korzystać z Oracle z .NET i to jest jak z powrotem do 1997 roku. Objaśnienie rzeczy jest oznaką słabości, a rejestr i zmienne środowiskowe wydają się funkcjonować.

Oto jak daleko mam.

Wypełniłem ogromny formularz o moim życiu w Oracle.com i pobrałem

64-bitowy klient instancji ODBC dla systemu Windows, 11.2.0.3.0 i rozpakuj go do folderu.Podstawowy 64-bitowy natychmiastowy klient systemu Windows, 11.2.0.3.0 i rozpakuj go do tego samego folderu, co powyżej.

Uruchomiłem plik .exe instalacji (brak MSI, pamiętaj, że jest to 1997).

Dodałem zmienną środowiskową TNS_NAMES wskazującą na korporacyjny plik TNSNames.ora w udziale sieciowym i skonfigurowałem szybki DSN w Panelu sterowania i uruchomiłem test - zadziałało!

Następnie pobrałem wersję XCOPY najnowszego ODP.NET dla .NET 4.0 i skopiowałem ją do mojego folderu Zależności pod moim obszarem roboczym kontroli źródła.

Dodałem odniesienie z mojego projektu doZależności odp.net4 odp.net bin 4 Oracle.DataAccess.dll

Przeczytałem, że muszę pozwolić zarządzanym obiektom ODP.NET wiedzieć, gdzie może znaleźć niezarządzane biblioteki Oracle, co, jak sądzę, jestZależności odp.net4 bin OraOps11w.dll ale gdzieś może być jakieś inne binaria Oracle?

Teraz ustawiam parametr pliku konfiguracyjnego o nazwie DllPath. Niestety, dokumentacja Oracle zdaje się nie zdawać sobie sprawy, że pliki konfiguracyjne .NET wymagają podpięcia ich sekcji w sekcji configSections.

Oto sekcja pliku konfiguracyjnego.

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

Co dzieje się w configSection? Kilka wątków, które znalazłem na tej stronie, daje przykład, a następnie powiedz „Nie wiem, jaki powinien być typ”, który jest głównym bitem!

Czy ktoś może mi doradzić? Czy ktoś zna link do przewodnika Dummies do kwerendy widoku Oracle z .NET?

Czy jest coś, co mogę zrobić w 1997 r., Aby powstrzymać się od korzystania z Oracle w 2012 r.?

AKTUALIZACJA

Szybka aktualizacja. Skopiowałem OraOps11w.dll do mojego folderu wyjściowego i usunąłem wszelkie zmiany pliku web.config, które wcześniej dodałem.

Teraz otrzymuję następujący błąd, który badam.

Nie można załadować pliku lub zespołu „Oracle.DataAccess” lub jednej z jego zależności. Podjęto próbę załadowania programu o niepoprawnym formacie.

Kilka innych forów mówi o rejestracji Oracle.DataAccess.dll w GAC, której chciałbym uniknąć - i nie widzę różnicy, ale idę.

AKTUALIZACJA 2

Zarejestrowanie biblioteki Oracle.DataAccess.dll w GAC nie miało żadnego znaczenia i wyrejestrowałem ją.

Kończy się tydzień roboczy i muszę złapać pociąg, ale wysłałem e-maila do innego zespołu dev i mam nadzieję, że walczyli już wcześniej (i nie używali nocnych wyciągów jak wszyscy inni).

AKTUALIZACJA 3

Dziś rano pobrałem i skonfigurowałem IIS Express 8.0 RC, który ma wersję 64-bitową. Wersja 64-bitowa nie jest obsługiwana z VS2010, więc musi być uruchamiana z linii poleceń. Było to dość proste, patrząc w Menedżerze zadań, mogłem zobaczyć, jakiego wiersza poleceń używa VS dla iisexpress.exe * 32.

Niestety pojawia się ten błąd podczas przeglądania mojej witryny obsługiwanej przez 64-bitowy program IIS Express.

Handler „ExtensionlessUrl-Integrated-4.0” ma zły moduł „ManagedPipelineHandler” na liście modułów

Jest to problem zbyt daleko w tej linii zapytań, więc spróbuję użyć 32-bitowej wersji ODP.NET.

AKTUALIZACJA 4

Pobrałem pełną instalację wersji 32-bitowej, ale przestraszyłem się, gdy zobaczyłem Oracle Universal Installer. Wygląda na to, że zaufanie do mojego cennego pudełka dev jest zbyt długie. Korzystam więc z 32-bitowego klienta „XCopy”, co pozwala mi wyświetlić stronę główną mojej witryny, więc działają odniesienia. Dziękujemy za te, które zasugerowały problem niedopasowania architektury 32/64.

Teraz patrzę na ten błąd podczas tworzenia nowego OracleConnection.

Dostawca nie jest zgodny z wersją klienta Oracle

AKTUALIZACJA 5 Myślę, że to zrobiłem.

Pobrałem więc 32-bitowy najnowszy 11g „Instant Client” i po prostu umieściłem go w moim folderze Zależności dla bazy kodu łącza rozwiązania. Dodałem ten folder do zmiennej środowiskowej% PATH% system, a także umieściłem tam plik OraOps11w.dll.

Wreszcie, _oracleConnection = new OracleConnection (connectionString) nie rzuca! Teraz muszę upewnić się, że mam butelkę Laphroaig na biurku, kiedy przychodzę rozstawić się na prod.

Podsumowując, dla IIS Express 7.5 (który jest procesem 32-bitowym) w systemie Windows 7, 64:

Pobierz i rozpakuj 32-bitowy 11g „Instant Client” do jakiegoś folderu i dodaj tę lokalizację do swojej ścieżki. Oci.dll to główna niezarządzana biblioteka Oracle po stronie klienta.

Pobierz i wyodrębnij 32-bitowy ODP.NET do jakiegoś folderu.

Skopiuj plik OraOps11w.dll do głównego folderu, w którym znajduje się klient Instant (powyżej).

Dodaj zmienną środowiskową TNS_ADMIN wskazującą na folder, w którym znajduje się plik tekstowy TNSNames.ora. To jest jak plik hosts i odwzorowuje nazwy usług Oracle na nazwy hostów serwerów.

Zamknij i ponownie otwórz program Visual Studio, aby uzyskać dostęp do nowych zmiennych środowiskowych, i dodaj odwołanie do zarządzanego zespołu Oracle.DataAccess.dll w folderze ODP.NET.

To powinno być to. Brzmi dość prosto, gdy wiesz jak.

AKTUALIZACJA 5.1

Badanie błędu poniżej, którego pierwotnie nie zgłosiłem, ponieważ byłem pewien, że jest to problem z zaporą. Firma, w której jestem, ma dwie na każdej stacji roboczej, ale właśnie otworzyłem surowe gniazdo do serwera Oracle, więc nie może być.

ORA-12541: TNS: brak słuchacza

questionAnswers(5)

yourAnswerToTheQuestion