C#找不到数据提供程序。NET框架请求

C#找不到数据提供程序。NET框架请求,c#,wpf,visual-studio-2010,mvvm,system.data.sqlite,C#,Wpf,Visual Studio 2010,Mvvm,System.data.sqlite,我正在使用VisualStudio2010Ultimate、C#WPF、MVVM和Sqlite 我有一个运行没有问题的项目(在Windows 8 x64、.NET Framework 4客户端Proile上),但我在运行已安装的应用程序(在Windows 7 x32、.NET Framework 4客户端Proile上)时遇到所有这些异常: 这是我的连接字符串: <?xml version="1.0"?> <configuration> <connectionS

我正在使用VisualStudio2010Ultimate、C#WPF、MVVM和Sqlite

我有一个运行没有问题的项目(在Windows 8 x64、.NET Framework 4客户端Proile上),但我在运行已安装的应用程序(在Windows 7 x32、.NET Framework 4客户端Proile上)时遇到所有这些异常:

这是我的连接字符串:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="GestorDocumentEntities" connectionString="metadata=res://*/GestorDocument.csdl|res://*/GestorDocument.ssdl|res://*/GestorDocument.msl;provider=System.Data.SQLite;provider connection string=&quot;data source=C:\SQLITE\BD\GestorDocument.s3db&quot;" providerName="System.Data.EntityClient"/>
  </connectionStrings>  
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>
provider=System.Data.SQLite;

拜托,有什么想法吗


现在它可以工作了! 我的解决方案是:

项目中的App.config:

    <configuration>  

  <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, Version=1.0.85.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
  </system.data>


      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
      </startup>
    </configuration>

包括以下参考:(将安装应用程序的计算机的版本。)

  • SQLite.Designer.dll
  • System.Data.SQLite.dll
  • System.Data.SQLite.Linq.dll
将“复制本地”属性设置为True

外接程序machine.config system.data和DBProviderFactorys之间的此行

<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.85.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />


请确保的版本为。NET Framework(由应用程序开发)安装在测试机器上。

机器上未安装
System.Data.SQLite
提供程序。正确的安装不仅会在计算机(可能是GAC)上删除二进制文件,还会在machine.config中删除一个类似以下内容的条目(这不是真实的):

如果查看假设条目,它的提供者名称与连接字符串中的提供者名称相同。这就是EF知道如何使用SQLite工厂来创建到数据库的连接。看,这一点也不神奇。它只是隐藏的


那么解决办法是什么呢?如果我知道的话。我的意思是,我使用的是一个真正紧凑的数据库,而不是这个SQLite的东西。您必须在目标计算机上安装SQLite,将工厂定义添加到.config文件,或者执行其他操作,例如用竹子构建平面。

项目是否设置为运行任何cpu或仅运行32位/64位?如果你在你的开发机器上改为32位,你会得到同样的错误吗?如果显式设置为32位,您会在windows 7计算机上看到错误吗?您好,谢谢回复。我一直在测试更改为“任意CP”或“x86”或“x64”,我得到了相同的错误。谢谢回答。我是c#的初学者。但是我在两台机器上都安装了System.Data.SQLite。可能是别的吗?@DianeWaldorf:可能不是。您是否已确认在发生错误的计算机上定义了提供程序?您所说的:已定义是什么意思?@DianeWaldorf:Open machine.config,用于出现此问题的计算机上所针对的.net版本。搜索“sqlite”“如果你找不到,我的答案是正确的。您必须重新安装,或者从开发计算机复制条目并将其放入.config文件或目标计算机的machine.config中。再简单不过了。@wpfc:(顺便说一句,我没有否决你的问题)相信我,如果你不投赞成票(或反对票),或者不选择正确的答案,对我来说都没有关系。但是,重要的是要对帮助你的答案进行投票,并在答案最有助于解决你的问题时选择正确的答案。如果你期望得到的答案能为你提供100%的解决方案,你将不会高兴。任何人都希望得到的最好答案是,它能引导你找到一个解决方案,而这个解决方案需要你花上指数级的时间去寻找自己的答案。
<system.data>
  <DbProviderFactories>
    <add name="System.Data.SQLite"
         invariant="System.Data.SQLite"
         description="SQLite Framework Data Provider for SQLite databases lol"
         type="SomeProviderFactory, System.Data.SQLite, Etcetera=etcetera"/>
    <!--snip-->
  </DbProviderFactories>
</system.data>
provider=System.Data.SQLite;