Ich versuche, eine ASP.NET MVC 4.0-Anwendung zu entwickeln, die Oracle 11g Express und das .NET 4.0-Framework verwendet. Ich kann eine Verbindung zur Datenbank herstellen, indem ich den ODP.NET-Provider verwende, und kann mein EDMX auch für die Datenbank generieren. Was ich nicht tun kann, ist Abfrage der zugrunde liegenden DB mit Entity Framework. Wenn ich meinen DbContext mit dem von Visual Studio erzeugten connectionString instanziiere, erhalte ich den folgenden Fehler:
Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert
Es ist jedoch installiert, weil
Ich führe den Code lokal auf Cassini und meine Hardware ist 32-Bit-Architektur, also würde ich annehmen, dass ich nur 32-Bit-DLLs verwenden könnte, also ist es kein Architekturproblem.
Das spezifische Bit des Codes ist als solches:
%Vor%Bitte helft mir, bevor ich alles verlasse, einen Bart wachse und irgendwo in den Bergen lebe.
LÖSUNG : Da ich die Lösung nicht erwähnt habe, werde ich sie hier für zukünftige Generationen erwähnen. Andrei Mikhalevich unten fragte nach meinem Verbindungsstring-Format und obwohl ich schemenhaft war, ging ich hin und schaute nach. Das habe ich gesehen:
%Vor%Achten Sie nun besonders auf die Zeile
%Vor%es sollte tatsächlich
lesen %Vor%andernfalls sagst du EF, [provider.dll] zu verwenden, was keine echte Sache ist. Beachten Sie außerdem, dass die Eigenschaft providerName des connectionString-Elements anscheinend überschrieben oder ignoriert wurde.
UPDATE 2 : Wenn dieser STILL nicht hilft, werfen Sie einen Blick auf machine.config. Sie sollten den folgenden Abschnitt sehen:
%Vor%Wenn & lt; invariant entfernen="Oracle.DataAccess.Client" / & gt; vorhanden ist, kommentieren Sie es und versuchen Sie es erneut, andernfalls, wenn es nicht da ist, fügen Sie es ein und versuchen Sie es erneut.
Für uns war es 32 gegenüber 64-Bit-Prozess.
Der Server ist 64 Bit. Der installierte ODP.NET (Oracle Client) ist ebenfalls 64 Bit. Unsere Anwendung kompiliert mit der Zielplattform "Any CPU" und "Prefer 32-bit" Flag SET:
wurde als 32-Bit-Prozess ausgeführt. Nach der Neukompilierung mit der Markierung "un-checked" hat alles funktioniert.
Dieser Fehler ist ein wenig irreführend, weil er auch durch falsche CPU-Kontexte verursacht werden kann. Stellen Sie sicher, dass Sie 32-Bit zulassen, wenn Sie einen 32-Bit-Oracle-Treiber verwenden. Dies kann als Einstellung unter IIS erfolgen oder Sie können Ihre Anwendung so einrichten, dass sie als IIS Express-Anwendung ausgeführt wird.
Eine andere mögliche Lösung für jemanden da draußen.
Meine Webapp funktionierte gut auf meinem Testserver, aber als ich begann, für meinen Live-Server zu entwickeln, bekam ich den gleichen Fehler: Der angeforderte .Net Framework Data Provider konnte nicht gefunden werden. Es ist möglicherweise nicht installiert
Wenn Sie die zwei Verbindungszeichenfolgen unten vergleichen, werden Sie bemerken, dass dasjenige, das mein Problem verursacht, das Wort "Verwaltet" im Namen des Anbieters hatte. Ich verwende tatsächlich die nicht verwaltete Version des Oracle-Anbieters. Daher bekam ich den Fehler auf meinem Live-Server und nicht auf meinem Testserver.
%Vor%Hier ist, was für mich funktioniert hat. Auf meinem Server war bereits ein Oracle-Client installiert. (Version 11.2.0)
Laden Sie von der ODAC für Windows Downloads Seite das ODP.NET herunter Verwalteter Treiber
(Ich wählte die Version Oktober 2015, 2,43 MB Download)
Entpacken Sie die zip-Datei, greifen Sie auf \ lib \ net40 \ Oracle.ManagedDataAccess.dll und legen Sie sie im bin-Ordner ab.
Fügen Sie in der Datei web.config einen Verweis auf den verwalteten ODP.NET-Treiber unter system.data \ DbProviderFactories hinzu, wie in erläutert diese Antwort .
Das ist es.
Zur Bestätigung führen Sie diesen Antwortcode aus, um festzustellen, ob der ODP.NET-Provider installiert ist. Sie sollten ODP.NET, Managed Driver in der Liste sehen.
Ich hatte ein ähnliches Problem. Es wurde durch Hinzufügen eines NuGet-Pakets gelöst. Ich hatte bereits Oracle.ManagedDataAccess.EntityFramework in meinen Referenzen von der Installation von ODT, aber es gab einen Entity Framework 5 Konflikt mit 6 im ausführlichen Protokoll. Nachdem ich das NuGet-Paket hinzugefügt hatte, fing alles an zu arbeiten.
Tags und Links asp.net-mvc c# asp.net odp.net oracle11g