1

我有一个使用Sql CE 3.5 SP2的应用程序。我已经包含了Sql CE需要的DLL - 我在这里找到了7个(C:\ Program Files文件(x86)\ Microsoft SQL Server Compact Edition \ v3.5),我只是将其作为应用程序文件添加到我的部署包中。“Bin Deploy”Sql CE 3.5 SP2当它已经安装时出错

我也用EF来访问数据库,所以我已经添加到我的app.config文件中的条目提供数据提供:

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

做我的部署应用上述作品;然而,当我从VS2010调试模式下运行我的应用程序,即通过EF运行任何DB的电话打进来了这个错误:

The specified store provider cannot be found in the configuration, or is not valid. 

如果我删除从我的app.config进入它工作正常,但停止工作针对已部署的应用

有没有快乐的媒介?我假设错误的原因是因为我的开发计算机上安装了Sql CE的合法副本,并且出于任何原因,将它注册到我的app.config中会导致它中断,但我不完全明白为什么。

小贴士?建议?

在此先感谢。

回答

2

我应该做一些更多的搜索。我发现这个问题,看来我需要在添加提供程序之前删除提供程序。当存在一个真正的Sql CE安装时,它会将其自身注册到machine.config中,因此将其添加到app.config会导致它被注册两次。

这是应该走在App.config

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