Oracle Instant Client und Entity Framework-Probleme mit Konfiguration
Ich versuche zu lernen und herauszufinden, ob es möglich ist, zum bereitstellen eines MVC, EF, ODAC 11.2.0.3 app auf einen server, auf dem eine frühere version von ODP.NET installiert. Anstatt die Aktualisierung der sever ODP.NET (ich kann nicht), dachte ich, ich könnte die Verwendung der Oracle Instant Client.
Ist das machbar?
1) ich habe diese dlls in meinem Projekt zur Unterstützung von Instant Client
-Oracle.DataAccess.dll
-oci.dll
-ociw32.dll
-orannzsbb11.dll
-oraociei11.dll
-OraOps11w.dll
2) als Nächstes habe ich die aktualisierte web.config für die dbProviderFactories
<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET"
invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET"
type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
3) Diese (afaik) ist, wie die Oracle-dll in das bin-rathre als die GAC
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
4) Endlich mein connectionString
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=XXX;PASSWORD=XXX;PERSIST SECURITY INFO=True;USER ID=XXX"" providerName="System.Data.EntityClient" />
</connectionStrings>
Dies ist die Fehlermeldung die ich erhalte
Kann nicht finden, die angefordert .Net Framework-Datenanbieter. Es kann nicht installiert werden.
Ich bin wirklich dankbar für jede Hilfe hier. Ich bin Recht neu und habe noch viel zu lernen. Vielen Dank im Voraus. cheers
- Haben Sie laden Sie die XCOPY-version? Haben Sie einen Blick auf, was die installieren.Fledermaus und konfigurieren.bat-Dateien innerhalb der XCOPY-zip-Datei machen? Einfach starten die Dateien laut der readme-Datei, bevor Sie versuchen, Dinge zu tun, manuell.
- Hallo Christian,ich habe den universal-installer für ODAC 11.2 Release 4 (11.2.0.3.0) und für den Instant Client habe ich heruntergeladen, das Paket und kopiert die dlls wieder zu meinem Projekt.
- Bitte laden Sie die XCOPY-Installation statt. Es ist entworfen, genau, um zu vermeiden die Mühe, die Sie sich in jetzt (kopieren der dlls und dabei config ohne Anleitung)
- Vielen Dank für diesen Beitrag sehr hilfreich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
<remove … />
Abschnitt in der<DbProviderFactories>
- element in der web-config zu löschen alle vorhandenen Oracle-provider. (vor der<add>
)<remove invariant ="Oracle.DataAccess.Client" />
Scheint es aus Ihrer Frage, die Sie bereitstellen müssen, ein update zu Ihrer Anwendung und in der neuen version von ODP.net mit nur xcopy-Bereitstellung Berechtigung.
Seit Ihrer Anmeldung geändert haben, dann müssen Sie sich nicht die Versammlung verbindlich, änderungen oder DbProviderFactories.
Aktualisieren Sie einfach die csproj der Bibliothek-Klasse mit Ihrem edmx etc zu haben, einen Verweis auf das neue ODP.net version, z.B.
Wenn Sie ein Problem mit Ihrem tnsnames.ora, dann müssten Sie Folgendes tun:
a) Fügen Sie eine system-Umgebungsvariable TNS_ADMIN zu zeigen, um das Verzeichnis der tnsnames.ora, oder
b) Ändern Sie die Verbindungszeichenfolge, um etwas basierend auf:
c) Sehen, wenn Sie können, legen Sie eine Kopie der tnsnames.ora woanders.
Hier ist mein Xcopy Lösung.
Ich es gepostet über in
(https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181)
als gut.
Aber ich denke, ich kann nach meinem xml ohne Probleme mit der Formatierung hier.
Nuget-Pakete".config"
app.config
(Hinweis: die
<clear />
tag unten. dies kann oder kann nicht notwendig sein, aber ich dachte, es war besser, Sie zu entfernen, da Sie nicht weiß, was in die Maschine.config-Datei)Ich entwickle auf einem x64-Windows-7-Rechner.
Habe ich heruntergeladen:
ODAC1120320Xcopy_32bit.zip
(aus oracle.com)
Ist die:
ODAC 11.2 Release 5 (11.2.0.3.20) Laden Sie die XCopy-version [Veröffentlicht September 11, 2012]
Ich entpackt diese zip-Datei.
Ich suchte und fischte sich diese Dateien:
oci.dll
Oracle.DataAccess.dll
orannzsbb11.dll
oraociei11.dll
OraOps11w.dll
Beachten, wenn es waren 2 Dateien mit dem gleichen Namen, habe ich mir den "bin\2.x\" oder "odp.net20\bin" - version für mein Framework 3.5 benötigt (ich bin nicht auf 4.0 noch).
Nahm ich diese Dateien, und setzen Sie Sie in einem Unterordner von wo meine .sln-Datei befindet.
Ich alle Dateien oben in der
Ordner
Habe ich "Verweis Hinzufügen", um einen Verweis hinzuzufügen Oracle.DataAccess.dll der "MyConsoleApp.csproj" csharp Projekt.
(Dies bedeutete durchsuchen "..\ThirdPartyReferences\Oracle\" natürlich)
Habe ich eine "Post-Build Event", um kopieren Sie die "extra" (aka, "Zubehör)" Dateien
Meine Zeilen in meinem post-build-event waren:
Beachten Sie, dass meine post-build-Ereignis ersetzt den "Kopieren, wenn Neuer" aus der URL, die oben genannten Anweisungen.
Wenn ich lief mein Projekt........Ich habe ein paar fehlende dll-Fehler.
Hinweis:
In der assembly, die Ihre Anrufe auf der EnterpriseLibrary.Daten-Objekte...erhalten Sie “kann Nicht finden Microsoft.Praktiken.SomethingSomething namespace. Nur halten Sie das hinzufügen von verweisen zu diesen dll ' s (dass die oben genannten Paket.config pull-down), bis der Fehler Weg.
Wie hier ist ein spezifischer:
Also (nach dem Nuget-natürlich, um alle Dateien herunterzuladen)
Ich ging hin und fügte eine Referenz zu:
\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll
Dass klärte sich die Probleme.
Und meine csharp code: (Hinweis "select *" ist für demo-Zwecke nur)
Und es funktionierte.
Danke:
https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/#comment-181
Ich denke, das macht ODP.NET ein "xcopy" - deployment.
Ich noch testen müssen, die Sie auf einem sauberen Computer, um sicher zu sein.
Aber sein das Ende des Tages..............
================
Zusätzliche Informationen:
Alles oben ist korrekt. Jedoch, ich schlug einen VORBEHALT.
Ich war mit einem "Console Application", um zu testen, meinen code.
Wenn Sie eine neue Konsolenanwendung in visual studio, STANDARDMÄßIG zu x86.
Wie hier zu sehen:
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os-aspx
EDIT: (Aktualisierter link)
http://www.xavierdecoster.com/post/2011/02/15/console-application-visual-studio-gotcha-on-x64-os
So, wenn ich alle Konfigurations-und code, und Sachen, die in einem realen Projekt (welches auf "Any CPU" auf einem x64-bit-Computer)...alles, was ich getan hatte aufgehört zu arbeiten. :<
Nach tweaking ein bisschen........
Ich fand diese Datei auf oracle.com
ODAC1120320Xcopy_x64.zip
Dann wiederholte ich alles, was ich Tat oben , aber Suche die entpackten Dateien dieses x64 zip-Datei.
Alles funktioniert.
Aber, dass "x86" Standard-Ding mit einer Konsolenanwendung warf mich für eine Schleife.
War ich immer die gleichen Fehler (data provider nicht gefunden) bei der Bereitstellung von ODP.NET über Instant Client. Das einzige, was ich tun musste, war, fügen Sie den folgenden, um meine exe.config-Datei (im-tag)