2014-09-16 21 views
21

Ricevo un'eccezione 'provider' elemento non riconosciuto ' in runtime quando utilizzo Entity Framework 5.0.0 con .NET 4.0. In realtà con .NET 4.0 è la versione 4.4.0 di Entity Framework che viene caricata quando eseguo un pacchetto di installazione con NuGet. Quando controllo le proprietà del file da Explorer posso vedere questo:Entity Framework: eccezione di 'provider' elemento non riconosciuto

enter image description here

Ecco il mio file di configurazione

<configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> 
    <connectionStrings> 
    <add name="xxx" connectionString="metadata=res://*/StreetMusicModel.csdl|res://*/StreetMusicModel.ssdl|res://*/StreetMusicModel.msl;   provider=MySql.Data.MySqlClient;provider connection string='   server=xxx.net;   user id=xxx;   password=xxx;   database=xxx'" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v12.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" /> 
    </providers> 
    </entityFramework> 

Ho la sensazione Entity Framework 4.4.0 non è in grado di riconoscere il tag. Posso semplicemente rimuovere o rinominare la sezione? Quando rimuovo la sezione ottengo un'altra eccezione: Il provider sottostante non è riuscito su Apri.

+0

provare a rimuovere ', Versione = 4.4.0.0, Cultura = neutro, PublicKeyToken = b77a5c561934e089' –

risposta

51

Ho riscontrato questo problema dopo aver effettuato il downgrade di EF dalla versione 6 alla versione 5.0.0 utilizzando Nuget. Penso che il problema è che la configurazione dei provider viene aggiunta quando si aggiunge EF v6 ma non viene rimosso dopo il downgrade. Così, si può semplicemente rimuovere il contenuto entro i <providers> tag e tag stessi e funzionerà bene:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="v12.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 
+0

rimuovendo i lavori per me. Se si elimina il file di configurazione VS2012 lo ricrea nuovamente con i tag in questione, e devo rimuoverli manualmente di nuovo. perché dovrebbe essere questo mi chiedo? – timothy

+0

per rispondere al mio commento - stavo rimuovendo da .exe.config nella directory bin, non dal file App.config. Rimuovi dal file App.config e tutto va bene. – timothy

+1

@timothy Questo è uno di quegli errori triple facepalm che i programmatori fanno. E l'ho fatto solo oggi. Non so dove fosse la mia testa. – Apostrofix

0

è necessario rimuovere il tag dal file app.config del progetto e non dal YourProjectName.dll .config file come lo rimuoverà automaticamente da YourProjectName.dll.config dopo aver compilato il tuo progetto.

Nota: la risposta si trova nel commento sopra riportato. Ho appena combinato la risposta qui.