Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'No Entity Framework provider found' for EF 6 and SQLite 1.0.96.0

I realize there are already several similar questions on this topic, but many of them are from older version of SQLite which did not fully support EF 6 as far as I am aware. I have tried countless suggestions from these threads and am either doing something wrong or something must have changed.

I am using VS 2013, targeting .NET 4.5.1 and have installed the sqlite-netFx451-setup-bundle-x86-2013-1.0.96.0.exe package from the system.data.sqlite.org download page, as well as the System.Data.SQLite EF6 package from the NuGet Manager (which installs EF6).

Below is my current App.config file (it is pretty much untouched except I tried adding the Version, Culture, and Public key variables to the type):

<?xml version="1.0" encoding="utf-8" ?> <configuration>   <configSections>     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />   </configSections>   <startup>     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />   </startup>   <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, Version=1.0.96.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />     </providers>   </entityFramework>   <system.data>     <DbProviderFactories>       <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, Version=1.0.96.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"       />     </DbProviderFactories>   </system.data> </configuration> 

And my packages.config:

<?xml version="1.0" encoding="utf-8"?> <packages>   <package id="EntityFramework" version="6.1.2" targetFramework="net451" />   <package id="System.Data.SQLite.EF6" version="1.0.96.0" targetFramework="net451" /> </packages> 

If I do something such as attempt to Generate a Database from Model I see the following error:

No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SQLite.EF6'. Make sure the provider is registered in the 'entityFramework' section...

I've tried messing around the the App.config file and adding other providers and providers as old threads have suggested but to no avail.

How do I fix this problem? Any help is greatly appreciated!

Edit: I managed to get it to work well enough to use a database first approach. Here is the relevant parts of my App.config file:

<providers>      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> </providers>  <DbProviderFactories>      <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" />      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /> </DbProviderFactories> 

I'm using EF 6.1.2 and System.Data.SQLite 1.0.96.0.

like image 725
Simon Avatar asked Mar 18 '15 18:03

Simon


2 Answers

I solved same error with just add a single line in App.config

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

PS: Add provider to <configuration> > <entityFramework> > <providers>

like image 54
Amir Astaneh Avatar answered Sep 22 '22 03:09

Amir Astaneh


Here is a working app.config

<?xml version="1.0" encoding="utf-8"?> <configuration>   <configSections>     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />   </configSections>   <startup>     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />   </startup>    <entityFramework>     <providers>       <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>     </providers>   </entityFramework>    <connectionStrings>     <!-- use AppDomain.SetData to set the DataDirectory -->     <add name="MapDbConnectionStr" connectionString="Data Source=|DataDirectory|MapDb.sqlite" providerName="System.Data.SQLite" />   </connectionStrings>    <system.data>     <DbProviderFactories>       <remove invariant="System.Data.SQLite.EF6" />       <add name="SQLite Data Provider" invariant="System.Data.SQLite" description="Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />     </DbProviderFactories>   </system.data>    </configuration> 
like image 38
Paul Avatar answered Sep 20 '22 03:09

Paul