Oracle Instant Client und Entity Framework haben Probleme mit der Konfiguration

8

Ich versuche zu lernen und herauszufinden, ob es möglich ist, eine MVC, EF, ODAC 11.2.0.3 App auf einem Server zu installieren, auf dem eine vorherige Version von ODP.NET installiert ist. Anstatt den Server ODP.NET zu aktualisieren (was ich nicht kann), dachte ich, ich könnte den Oracle Instant Client verwenden.

Ist das machbar?

1) Ich habe diese DLLs zu meinem Projekt hinzugefügt, um Instant Client zu unterstützen

-Oracle.DataAccess.dll

-oci.dll

-ociw32.dll

-orannzsbb11.dll

-oraociei11.dll

-OraOps11w.dll

2) Als nächstes habe ich web.config für dbProviderFactories

aktualisiert %Vor%

3) Dies (afaik) ist, wie man die Oracle dll in der bin rathre als die GAC

verwendet %Vor%

4) Endlich mein connectionString

%Vor%

Dies ist der Fehler, den ich erhalte Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert.

Ich schätze jede Hilfe hier sehr. Ich bin ziemlich neu und habe viel zu lernen. Danke im Voraus. Prost

    
Mustang31 28.03.2012, 16:34
quelle

4 Antworten

3

Fügen Sie einen <remove … /> -Abschnitt im Element <DbProviderFactories> in der Webkonfiguration hinzu, um einen vorhandenen Oracle-Provider zu entfernen. (vor dem <add> )

<remove invariant ="Oracle.DataAccess.Client" />

    
Jeremy 02.04.2012, 17:58
quelle
1

Aus Ihrer Frage geht hervor, dass Sie ein Update für Ihre Anwendung und die neue Version von ODP.net nur mit der xcopy-Deployment-Berechtigung bereitstellen müssen.

Da Ihre Anwendung geändert wird, sollten Sie die Änderungen der Baugruppenbindung oder DbProviderFactories nicht benötigen. Aktualisieren Sie einfach den csproj der Klassenbibliothek mit Ihrer edmx etc, um einen Verweis auf die neue ODP.net-Version zu erhalten, zB

%Vor%

Wenn Sie ein Problem mit Ihrem tnsnames.ora bekommen, müssen Sie einen der folgenden Schritte ausführen: a) Fügen Sie eine Systemumgebungsvariable TNS_ADMIN hinzu, die auf das Verzeichnis der tnsnames.ora verweist, oder b) Ändern Sie die Verbindungszeichenfolge anhand von:

%Vor%

c) Sehen Sie, ob Sie eine Kopie der tnsnames.ora woanders ablegen können.

    
Arieh 29.03.2012 07:57
quelle
1

Hier ist meine Xcopy-Lösung.

Ich habe es bei

gepostet

( Ссылка )

auch.

Aber ich denke, ich kann meine XML-Datei hier ohne Formatierungsprobleme posten.

Nuget "packages.config"

%Vor%

app.config

(notieren Sie das <clear /> -Tag unten. Dies kann oder wird nicht benötigt, aber ich dachte, es wäre besser, sie zu löschen, da Sie nicht wissen, was in der Datei machine.config sein könnte)

%Vor%

Ich entwickle auf einem x64 Windows 7 Rechner.

Ich habe heruntergeladen: ODAC1120320Xcopy_32bit.zip (von oracle.com)

Was ist das:

ODAC 11.2 Release 5 (11.2.0.3.20) Laden Sie die XCopy-Version herunter [Released 11. September 2012]

Ich habe diese Zip-Datei entpackt.

Ich habe diese Dateien gesucht und ausgefischt:

oci.dll  Oracle.DataAccess.dll  orannzbb11.dll  oraociei11.dll  OraOps11w.dll

Wenn zwei Dateien mit demselben Namen vorhanden waren, habe ich die Version "bin \ 2.x" oder "odp.net20 \ bin" für mein Framework benötigt (ich bin noch nicht auf 4.0).

Ich nahm diese Dateien und legte sie in einen Unterordner von wo sich meine .sln Datei befindet.

%Vor%

Ich lege alle Dateien oben in das

%Vor%

Ordner

Ich habe "Add Reference" verwendet, um dem Projekt "MyConsoleApp.csproj" csharp einen Verweis auf Oracle.DataAccess.dll hinzuzufügen. (Dies bedeutete natürlich, zu ".. \ ThirdPartyReferences \ Oracle \" zu navigieren)

Ich habe ein "Post Build Event" verwendet, um die "extra" (aka, "Zubehör") Dateien zu kopieren

Meine Zeilen in meinem Post-Build-Event waren:

%Vor%

Beachten Sie, dass mein post-build-Ereignis das "Copy if Newer" aus den obigen URL-Anweisungen ersetzt.

Als ich mein Projekt lief ......... Ich habe ein paar fehlende DLL-Fehler.

Hinweis:  In der Assembly, die Ihre Aufrufe der EnterpriseLibrary.Data-Objekte ... enthält, erhalten Sie "Kann Microsoft.Practices.SomethingSomethingSomething Namespace nicht finden. Fügen Sie einfach weitere Referenzen zu diesen DLLs hinzu (die oben genannte package.config wird heruntergerissen), bis die Fehler verschwinden.

Wie hier ist eine spezifische:

%Vor%

Also (nach dem Ausführen von Nuget natürlich, um alle Dateien herunterzuladen) Ich ging und fügte einen Verweis hinzu:

\ packages \ CommonServiceLocator.1.0 \ lib \ NET35 \ Microsoft.Practices.ServiceLocation.dll

Das hat die Probleme geklärt.

Und mein csharp-Code: (Hinweis "select *" dient nur zu Demonstrationszwecken)

%Vor%

Und es hat funktioniert.

Danke:

Ссылка

Ich denke, das macht ODP.NET zu einer "xcopy" -Implementierung.

Ich muss noch auf einer sauberen Maschine testen, um sicher zu sein.

Aber es ist das Ende des Tages ..............

=================

Zusätzliche Informationen:

Alles oben ist richtig. Ich treffe jedoch einen Vorbehalt. Ich habe eine "Konsolenanwendung" verwendet, um meinen Code zu testen.

Wenn Sie Visual Studio eine neue Konsolenanwendung hinzufügen, wird diese standardmäßig auf x86 gesetzt.

Wie hier zu sehen:

Ссылка

BEARBEITEN: (Aktualisierter Link)

Ссылка

Wenn ich also die gesamte Konfiguration, den Code und die Sachen in ein echtes Projekt (das auf einer x64-Bit-Maschine auf "Any CPU" gesetzt war) legte ... alles, was ich getan hatte, hörte auf zu arbeiten. : & lt;

Nach ein bisschen Feineinstellung ........ Ich habe diese Datei auf oracle.com gefunden ODAC1120320Xcopy_x64.zip Ich habe dann alles, was ich oben gemacht habe, wiederholt, aber die entpackten Dateien dieser x64-Zip-Datei durchsucht.

Alles funktioniert.

Aber diese "x86" -Standard-Sache mit einer Konsolenanwendung hat mich zu einer Schleife gebracht.

    
granadaCoder 22.01.2013 22:27
quelle
0

Ich habe bei der Bereitstellung von ODP.NET über den Instant Client denselben Fehler erhalten (Datenanbieter nicht gefunden). Das Einzige, was ich tun musste, war folgendes in meine Datei exe.config (innerhalb des Tags) hinzuzufügen:

%Vor%     
massiAng 15.10.2013 09:41
quelle