带有实体框架的SQLite:VS2013中没有可用的SQLite数据提供程序

时间:2018-08-08 14:11:42

标签: c# entity-framework sqlite visual-studio-2013 system.data.sqlite

关于此主题的Stackoverflow有很多问题。我尝试了大多数建议的答案,但没有一个对我有用。

  • 我的设置:Win 7 32位+ VS2013 Update 5
  • 我已安装sqlite-netFx46-setup-bundle-x86-2015-1.0.108.0.exe(完整安装)
  • 然后我创建了一个新的.NET 4.6控制台项目
  • 然后我安装了SQLite Nuget软件包
  • 此外,我在AnyCPU中构建了项目,然后在x86中进行了另一次尝试
  • 然后我尝试添加实体数据模型(添加->新项目-> ADO.NET实体数据模型)

无论我选择了哪种选项(EF Designer,代码优先),当我尝试创建连接时都看不到SQlite的提供程序。

我的配置文件:

<?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>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
    </startup>
    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
            <parameters>
                <parameter value="v11.0" />
            </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>
    <system.data>
        <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" />
        </DbProviderFactories>
    </system.data>
</configuration>

我的软件包配置:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.0.0" targetFramework="net46" />
  <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net46" />
  <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net46" />
</packages>

编辑:添加屏幕截图以澄清问题:

There i should be able to set a connection to my SQLite DB

我做错了什么?谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,我只是想知道发生了什么事。我只是没有安装适当的提供程序。我应该安装sqlite-netFx451-setup-bundle-x86-2013-1.0.108.0.exe

在System.Data.SQLite Wiki中不是很清楚,但是文件名中的年份不是我想象的发布日期,而是VisualStudio版本。我的错误是根据所需的目标.NET版本选择提供程序。

一旦安装了正确的提供程序,即使提供程序的目标是.NET 4.5.1而我的项目的目标是.NET 4.6,一切都可以正常运行