Entity Framework 的 SQLite:VS2013 中没有可用的 SQLite 数据提供程序
SQLite with Entity Framework : no data provider for SQLite available in VS2013
Whosebug 上有很多关于此主题的问题。我尝试了大多数建议的答案,但其中 none 对我有用。
- 我的设置:Win 7 32 位 + VS2013 更新 5
- 我安装了
sqlite-netFx46-setup-bundle-x86-2015-1.0.108.0.exe
(完全安装)
- 然后我创建了一个新的 .NET 4.6 控制台项目
- 然后我安装了 SQLite Nuget 包
- 此外,我在 AnyCPU 中构建了我的项目,并在 x86 中进行了另一次尝试
- 然后我尝试添加实体数据模型(添加 -> 新项目 -> ADO.NET 实体数据模型)
无论我选择什么选项(EF Designer、Code First),当我尝试创建连接时,都看不到 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-netFx451-setup-bundle-x86-2013-1.0.108.0.exe
在System.Data.SQLite wiki 中不是很清楚,但是文件名中的年份并不是我想的发布日期,而是VisualStudio 版本。我的错误是按所需的目标 .NET 版本选择了提供程序。
安装正确的提供程序后,即使提供程序以 .NET 4.5.1 为目标,而我的项目以 .NET 4.6 为目标,一切都会顺利进行
Whosebug 上有很多关于此主题的问题。我尝试了大多数建议的答案,但其中 none 对我有用。
- 我的设置:Win 7 32 位 + VS2013 更新 5
- 我安装了
sqlite-netFx46-setup-bundle-x86-2015-1.0.108.0.exe
(完全安装) - 然后我创建了一个新的 .NET 4.6 控制台项目
- 然后我安装了 SQLite Nuget 包
- 此外,我在 AnyCPU 中构建了我的项目,并在 x86 中进行了另一次尝试
- 然后我尝试添加实体数据模型(添加 -> 新项目 -> ADO.NET 实体数据模型)
无论我选择什么选项(EF Designer、Code First),当我尝试创建连接时,都看不到 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-netFx451-setup-bundle-x86-2013-1.0.108.0.exe
在System.Data.SQLite wiki 中不是很清楚,但是文件名中的年份并不是我想的发布日期,而是VisualStudio 版本。我的错误是按所需的目标 .NET 版本选择了提供程序。
安装正确的提供程序后,即使提供程序以 .NET 4.5.1 为目标,而我的项目以 .NET 4.6 为目标,一切都会顺利进行