无法找到请求的.Net Framework数据提供程序 - SQLite

时间:2012-03-15 18:35:49

标签: c# sqlite deployment ado.net

我认为sqlite很简单,但它让我很难过。我只想创建一个应用程序,我可以使用ado.net实体数据类连接到sqlite数据库。

在运行Windows XP的虚拟计算机上测试应用程序时遇到此问题。当我部署它们时,应用程序在我当前的计算机上以及在我的笔记本电脑上运行正常

以下是虚拟计算机上发生的情况:

  • 该应用程序可以启动。
  • 应用程序可以使用System.Data.SQLite
  • 与数据库进行交互
  • 应用程序无法使用ADO.NET实体数据模型连接到数据库

当我尝试连接时,我得到以下异常:

enter image description here

enter image description here

我知道有很多帖子都在讨论这个问题,大多数人说你需要下载.NET provider for Sqlite.

我已经安装了sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exe,我遇到了同样的问题。我该怎么办?


修改

我设法通过添加:

来建立连接
<system.data>
 <DbProviderFactories>
  <remove invariant="System.Data.SQLite"/>
  <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>

到我的app.config文件。

问题是现在我无法选择数据也不能将记录插入数据库。我现在尝试插入新记录时遇到的例外是:

在“System.Data.SQLite.SQLiteFactory”类型的商店提供程序实例上调用“GetService”方法后返回null。商店提供商可能无法正常运行。

enter image description here

1 个答案:

答案 0 :(得分:32)

必须添加:

 <system.data>
    <DbProviderFactories>
     <remove invariant="System.Data.SQLite"/>
      <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>
  </system.data>

到我的app配置文件。它现在看起来像:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
  </startup>
  <system.data>
     <DbProviderFactories>
        <remove invariant="System.Data.SQLite"/>
        <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>
    </system.data>
</configuration>

在安装sqlite的位置我必须复制

enter image description here

到我的程序exe所在的输出目录