C#程序正在寻找sql server compact 3.5,但我';我使用4.0

C#程序正在寻找sql server compact 3.5,但我';我使用4.0,c#,sql-server-ce-4,sql-server-ce-3.5,C#,Sql Server Ce 4,Sql Server Ce 3.5,好吧,这个问题真的让我困惑,如果问题的标题不能准确描述我的问题,我道歉 我有一个用C#编写的程序,使用实体框架和SQLServerCE。我在Windows7上开发了它,它运行得很好。我还有一台Windows8.1机器,我已经在上面测试过了,它在上面也可以正常工作 但是,在一些Windows 8.1计算机上,程序在试图访问数据库时立即崩溃。我得到以下错误: 未处理的异常:System.InvalidOperationException:未找到具有固定名称“System.Data.SqlServer

好吧,这个问题真的让我困惑,如果问题的标题不能准确描述我的问题,我道歉

我有一个用C#编写的程序,使用实体框架和SQLServerCE。我在Windows7上开发了它,它运行得很好。我还有一台Windows8.1机器,我已经在上面测试过了,它在上面也可以正常工作

但是,在一些Windows 8.1计算机上,程序在试图访问数据库时立即崩溃。我得到以下错误:

未处理的异常:System.InvalidOperationException:未找到具有固定名称“System.Data.SqlServerCe.3.5”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关更多信息,请参阅

现在,这让我很困惑,因为我的项目(4.0)上安装了最新的SQL Server CE NuGet包。我使用SQL Server CE工具箱显式创建了SQL Server CE 4.0数据库,随应用程序分发了4.0 dll,并且在
my app.config
文件(
invariantName=“System.Data.SqlServerCe.4.0”
中显式列出了4.0版

那么,为什么错误会显示
System.Data.SqlServerCe.3.5
?为什么这个错误只发生在几个Windows 8.1机器上

(我还搜索了整个解决方案,文本“3.5”甚至没有出现在任何地方。)

我发现了类似的错误,并尝试(从)包括以下内容:

private volatile Type _dependency;

public MyClass()
{
    _dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}
没有效果,我仍然得到同样的确切答案


无论如何,如果有人有任何想法,我将非常感谢任何形式的输入。

查看您的项目参考资料,您可能引用了错误的dll

我也有同样的问题,并基于此解决了它

在App.config中找到此部分:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>


并将
oldVersion=“0.0.0-4.0.0.1”
更改为
oldVersion=“4.0.0-4.0.0.1”
检查配置文件,并为
dbProviderFactorys
添加如下条目:

<system.data>
  <DbProviderFactories>
     <remove invariant="System.Data.SqlServerCe.4.0" />
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
 </DbProviderFactories>
</system.data>

我认为问题在于系统中安装了SQL Server CE组件

我的解决方案:

<DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.3.5" />
    <remove invariant="System.Data.SqlServerCe.4.0" />

    <add name="Microsoft SQL Server Compact Data Provider 4.0" 
         invariant="System.Data.SqlServerCe.4.0" 
         description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
         type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>


我只是反复检查了一下。我删除了所有引用,卸载了entity framework,重新安装了它,并添加了正确的dll。还是一样。我怀疑这和它有什么关系,但是你的项目使用的是什么版本的.NET framework?我从我的机器上卸载了ce 3.5。这为我解决了这个错误。