Sto cercando di sviluppare un'applicazione ASP.NET MVC 4.0 utilizzando Oracle 11g Express e il framework .NET 4.0. Posso connettermi al DB usando il provider ODP.NET e posso anche generare il mio EDMX contro il database. Quello che non posso fare è interrogare il DB sottostante usando l'entity framework. Quando un'istanza mia DbContext utilizzando il connectionstring Visual Studio ha generato, ottengo il seguente errore:Errore ODP.NET Impossibile trovare il provider di dati Framework .Net richiesto
Unable to find the requested .Net Framework Data Provider. It may not be installed
Tuttavia, è installato perché
- posso vedere la dll nel GAC.
- È menzionato in machine.config.
- Si fa riferimento al mio progetto.
- Lo uso effettivamente per generare il mio EDMX dal database.
- Ho verificato che sto referenziazione la versione corretta (4.112.3.0) ovunque
Sono in esecuzione il codice localmente su Cassini e il mio hardware è l'architettura a 32 bit, quindi vorrei assumere sarei solo in grado di utilizzare DLL a 32 bit, quindi non è un problema di architettura.
Il bit di codice specifico è come tale:
public class MyContext : ObjectContext, IUnitOfWork
{
public MyContext()
: base(ConfigurationManager
.ConnectionStrings["OracleEntities"]
.ConnectionString)//Connectionstring is verified
{}
}
please help me prima che io lascio tutto, farsi crescere la barba e andare a vivere in montagna da qualche parte.
SOLUZIONE: Poiché non ho visto alcuna menzione della soluzione, la menzionerò qui per le generazioni future. Andrei Mikhalevich di sotto mi ha chiesto del mio formato di stringhe di connessione e, anche se ero un programmatore, sono andato a dare un'occhiata. Questo è quello che ho visto:
metadata=res://*/OracleModel.csdl|res://*/
OracleModel.ssdl|res://*/
OracleModel.msl;
provider=provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=localhost:1521;
PASSWORD=xxx;PERSIST SECURITY INFO=True;USER ID=xxx
Ora, prestare particolare attenzione alla linea
provider=provider=Oracle.DataAccess.Client;
si dovrebbe, infatti, leggere
provider=Oracle.DataAccess.Client;
altrimenti stai dicendo EF usare [provider.dll], che non è una cosa reale. Si noti inoltre che sembra che la proprietà providerName dell'elemento connectionString sembra essere stata ignorata o ignorata.
UPDATE 2: Se questo ANCORA non aiuta, dare un'occhiata a machine.config. Si dovrebbe vedere la sezione seguente:
<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" />
<remove invariant="Oracle.DataAccess.Client" />
</DbProviderFactories>
Se < remove invariante = "Oracle.DataAccess.Client"/> è presente, commento fuori e tentare di nuovo, in caso contrario, se non è lì, metterlo in e prova ancora.
Sì. La tua risposta mi ha indirizzato nella giusta direzione, quindi la contrassegnerò come risposta e upvote. –
Grazie amico :). Buona fortuna – Andrei
LOL. Ho avuto di nuovo lo stesso errore e la mia ricerca su google per una risposta mi ha riportato alla mia stessa domanda. –