Wie verwende ich Oracle aus .NET?

Leider versuche ich, Oracle aus .NET zu verwenden, und es ist, als würde ich auf 1997 zurückgreifen. Die richtige Erklärung der Dinge ist ein Zeichen für eine Schwäche und die Registrierungs- und Umgebungsvariablen scheinen zu funktionieren.

Also hier ist, wie weit ich bin.

Ich habe ein riesiges Formular über mein Leben bei Oracle.com ausgefüllt und das heruntergeladen

ODBC Windows 64-Bit-Instanz-Client, 11.2.0.3.0 und entpackte es in einen Ordner.Einfacher Windows 64-Bit Instant Client, 11.2.0.3.0 und entpacken Sie es in den gleichen Ordner wie oben.

Ich habe die install .exe ausgeführt (kein MSI, ich erinnere mich, das ist 1997).

Ich habe eine TNS_NAMES-Umgebungsvariable hinzugefügt, die auf die Unternehmensdatei TNSNames.ora auf einer Netzwerkfreigabe verweist, und einen schnellen DSN in der Systemsteuerung eingerichtet und den Test ausgeführt - es hat funktioniert!

Anschließend habe ich die XCOPY-Version des neuesten ODP.NET für .NET 4.0 heruntergeladen und in den Ordner "Abhängigkeiten" unter meinem Versionsverwaltungsarbeitsbereich kopiert.

Ich habe eine Referenz aus meinem Projekt zu hinzugefügtAbhängigkeiten \ odp.net4 \ odp.net \ bin \ 4 \ Oracle.DataAccess.dll

Ich habe gelesen, dass ich das verwaltete ODP.NET-Zeug wissen lassen muss, wo es seine nicht verwalteten Oracle-Bibliotheken finden kann, was ich vermuteAbhängigkeiten \ odp.net4 \ bin \ OraOps11w.dll aber es könnten irgendwo andere Oracle-Binärdateien sein?

Jetzt setze ich einen Konfigurationsdateiparameter namens DllPath. Leider scheinen die Oracle-Dokumente nicht zu bemerken, dass die Abschnitte der .NET-Konfigurationsdateien im Abschnitt configSections verknüpft werden müssen.

Hier ist der Abschnitt mit der Konfigurationsdatei.

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

Was geht in der configSection? Die wenigen Threads, die ich hier gefunden habe, geben ein Beispiel und sagen dann "Ich weiß nicht, welcher Typ = sollte", was das Hauptbit ist!

Kann mir jemand raten? Kennt jemand einen Link zu einem Dummies-Handbuch zum Abfragen einer Oracle-Ansicht von .NET?

Kann ich 1997 etwas tun, um zu verhindern, dass ich 2012 Oracle verwenden muss?

AKTUALISIEREN

Nur ein kurzes Update. Ich habe OraOps11w.dll in meinen Ausgabefachordner kopiert und alle Änderungen an der Datei web.config entfernt, die ich zuvor hinzugefügt hatte.

Ich erhalte jetzt die folgende Fehlermeldung, die ich recherchiere.

Datei oder Assembly 'Oracle.DataAccess' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden.

In einigen anderen Foren geht es darum, Oracle.DataAccess.dll im GAC zu registrieren, was ich unbedingt vermeiden möchte - und ich kann den Unterschied sowieso nicht erkennen, aber ich werde es versuchen.

UPDATE 2

Das Registrieren der Oracle.DataAccess.dll-Bibliothek im GAC hat keinen Unterschied gemacht, und ich habe die Registrierung aufgehoben.

Das Ende der Arbeitswoche steht vor der Tür und ich muss einen Zug nehmen, aber ich habe einem anderen Entwicklerteam hier eine E-Mail geschickt und hoffe, dass sie diesen Kampf schon einmal geschlagen haben (und nicht wie alle anderen nächtliche Auszüge verwenden).

UPDATE 3

Heute Morgen habe ich IIS Express 8.0 RC mit einer 64-Bit-Version heruntergeladen und eingerichtet. Die 64-Bit-Version wird von VS2010 nicht unterstützt und muss daher über die Befehlszeile ausgeführt werden. Dies war recht einfach. Im Task-Manager konnte ich sehen, welche Befehlszeile VS für iisexpress.exe * 32 verwendet.

Leider erhalte ich diese Fehlermeldung, wenn ich zu meiner Site navigiere, die vom 64-Bit-IIS Express gehostet wird.

Der Handler "ExtensionlessUrl-Integrated-4.0" hat ein fehlerhaftes Modul "ManagedPipelineHandler" in seiner Modulliste

Dies ist ein Problem, das zu weit unten in dieser Fragestellung liegt. Daher werde ich versuchen, die 32-Bit-Version von ODP.NET zu verwenden.

UPDATE 4

Ich habe die Vollinstallation der 32-Bit-Version heruntergeladen, aber ich hatte Angst, als ich den Oracle Universal Installer sah. Es sieht zu 90s aus, um mit meiner kostbaren Entwicklerbox zu vertrauen. Ich verwende also den 32-Bit-Client 'XCopy', mit dem ich die Homepage meiner Site aufrufen kann, damit Referenzen funktionieren. Vielen Dank für die Vorschläge, die ein Architekturproblem mit 32/64 vermuten ließen.

Jetzt untersuche ich diesen Fehler beim Instanziieren einer neuen OracleConnection.

Der Anbieter ist nicht mit der Version des Oracle-Clients kompatibel

UPDATE 5 Ich glaube, ich habe es geschafft.

Also habe ich den neuesten 32-Bit 11g "Instant Client" heruntergeladen und ihn einfach in meinen \ Dependencies-Ordner für die Lösungs-Trunk-Codebasis gestellt. Ich habe diesen Ordner der Systemumgebungsvariablen% PATH% hinzugefügt und auch die Datei OraOps11w.dll dort eingefügt.

Schließlich wirft _oracleConnection = new OracleConnection (connectionString) nicht! Jetzt muss ich sicherstellen, dass ich eine Flasche Laphroaig auf dem Schreibtisch habe, wenn ich zum Bereitstellen zum Stoßen komme.

Kurz gesagt, für IIS Express 7.5 (ein 32-Bit-Prozess) unter Windows 7, 64:

Laden Sie den 32-Bit 11g "Instant Client" herunter, extrahieren Sie ihn in einen Ordner und fügen Sie diesen Speicherort Ihrem PATH hinzu. Oci.dll ist die wichtigste clientseitige nicht verwaltete Oracle-Bibliothek.

Laden Sie das 32-Bit-ODP.NET herunter und extrahieren Sie es in einen Ordner.

Kopieren Sie die Datei OraOps11w.dll in den Hauptordner, in dem sich der Instant Client befindet (siehe oben).

Fügen Sie eine TNS_ADMIN-Umgebungsvariable hinzu, die auf einen Ordner verweist, in dem sich die Textdatei TNSNames.ora befindet. Dies ähnelt einer Hosts-Datei und ordnet Oracle-Dienstnamen Server-Hostnamen zu.

Schließen Sie Visual Studio, und öffnen Sie es erneut, um sicherzustellen, dass Sie die neuen Umgebungsvariablen übernehmen, und fügen Sie einen Verweis auf die von Oracle.DataAccess.dll verwaltete Assembly in Ihrem ODP.NET-Ordner hinzu.

Das sollte es sein. Klingt ziemlich einfach, wenn Sie wissen wie.

UPDATE 5.1

Untersuchen Sie den folgenden Fehler, den ich ursprünglich nicht gemeldet habe, da ich sicher war, dass es sich um ein Firewall-Problem handelt. Die Firma, bei der ich bin, hat zwei auf jeder Workstation, aber ich habe gerade einen rohen Socket für den Oracle-Server geöffnet, damit es nicht sein kann.

ORA-12541: TNS: kein Listener

Antworten auf die Frage(5)

Ihre Antwort auf die Frage