首页 > 解决方案 > 带有实体框架的 SQLite:VS2013 中没有可用的 SQLite 数据提供程序

问题描述

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

无论我选择什么选项(EF 设计器、代码优先),当我尝试创建连接时,都看不到 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>

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

在那里我应该能够设置到我的 SQLite DB 的连接

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

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

解决方案


好的,我刚刚弄清楚发生了什么。我只是没有安装正确的提供程序。我应该安装sqlite-netFx451-setup-bundle-x86-2013-1.0.108.0.exe

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

一旦安装了正确的提供程序,一切都很好,即使提供程序的目标是 .NET 4.5.1 而我的项目目标是 .NET 4.6


推荐阅读