2014-10-12 22 views
18

Ricevo questo errore con il pacchetto Nuget per SQLite 1.0.94.1. Mi sono divertito con le varie sezioni app.config, aiutate da domande simili sulle versioni precedenti di questo pacchetto, ma non riesco a farlo funzionare. Di seguito è l'app.config come l'ho trovato dopo aver installato il pacchetto Nuget. Ho eliminato l'app.config prima di installarlo. Dopo ho aggiunto solo le stringhe di connessione.Impossibile determinare il nome del provider per la factory provider di tipo 'System.Data.SQLite.SQLiteFactory'. con la versione del pacchetto Nuget 1.0.94.1

Quindi, dov'è il problema ??

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <!--Added by me, the rest of the app.config was constructed by installing the SQLite package --> 
    <connectionStrings> 
    <add name="PrivateMessengerContext" connectionString="DataSource=|DataDirectory|\PrivateMessengerDb.db" providerName="System.Data.SQLite.EF6"/> 
    <add name="PasswordContext" connectionString="DataSource=|DataDirectory|\PasswordDb.db" providerName="System.Data.SQLite.EF6"/> 
    </connectionStrings> 
    <system.data> 
    <!-- 
     NOTE: The extra "remove" element below is to prevent the design-time 
      support components within EF6 from selecting the legacy ADO.NET 
      provider for SQLite (i.e. the one without any EF6 support). It 
      appears to only consider the first ADO.NET provider in the list 
      within the resulting "app.config" or "web.config" file. 
    --> 
    <DbProviderFactories> 
     <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> 
     <remove invariant="System.Data.SQLite" /> 
     <remove invariant="System.Data.SQLite.EF6" /> 
     <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> 
    </DbProviderFactories> 
    </system.data> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> 
    </providers> 
    </entityFramework> 
</configuration> 
+1

Quella app.config non sembra giusta. Pls cancella e installa solo il pacchetto sqlite.ef6 - ma se si esclude che sia instabile, suggerisci di segnalare eventuali problemi a system.data.sqlite.org – ErikEJ

+1

@ErikEJ Ho disinstallato il pacchetto e reinstallato solo il pacchetto EF6. Ora sono state installate meno dipendenze, ma la resuling app.config è identica e l'errore rimane. Il pacchetto ha più di 4.000 download, quindi devono esserci dei maghi che funzionano. – Dabblernl

+1

Quando viene visualizzato l'errore? – ErikEJ

risposta

21

Aggiungi un altro fornitore

<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

mossa

<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />

muggito

<remove invariant="System.Data.SQLite" />

e modificare il nome del provider su providerName="System.Data.SQLite nella stringa di connessione.

EDIT: Vedi anche http://system.data.sqlite.org/index.html/tktview/2be4298631c01be99475

+2

Ho lo stesso problema la differenza è che io uso entityframework.6.1.3.nupkg, quindi quando implemento il tuo consiglio lancia questa eccezione ADO.Il provider NET con nome invariante 'System.Data.SQLite' non è registrato nel file di configurazione della macchina o dell'applicazione, o non può essere caricato. – Cyberguille

7

Quello che ha funzionato per me è stato quello di seguire il commento 2015/04/29 08:33:33 nel SQLite ticket:

Se si cambia progetto piattaforma di destinazione dalla 4.5.1 alla 4 e reinstallare il pacchetto di nuget si avrà tutto funzionante (anche se in seguito si ritorna alla 4.5.1) "

Potrebbe h avremo un effetto simile sulla configurazione della risposta di Mihail, non sono sicuro.

+2

Miracolosamente risolto il mio .. Basta notare (come si dice sulla risposta); la mia versione della piattaforma era solo 4.5. Tornando alla versione 4 della piattaforma, la reinstallazione di SQLite e il successivo ritorno a 4.5 hanno funzionato. – myuce

+0

Successivamente ho avuto un altro problema, perché Sqllite.CodeFirst richiedeva un EntityFramework recente. Ho dovuto aggiornare manualmente EntityFramework da 6.1.0 a 6.1.3 (cliking sul numero di versione). Ora ho finito, su .NET v4.0. – Jarekczek

Problemi correlati