“Bin Deploy”Sql CE 3.5 SP2 & 已安装时出错
Posted
技术标签:
【中文标题】“Bin Deploy”Sql CE 3.5 SP2 & 已安装时出错【英文标题】:"Bin Deploy" Sql CE 3.5 SP2 & Error when it's already installed 【发布时间】:2011-05-20 13:29:56 【问题描述】:我有一个使用 Sql CE 3.5 SP2 的应用程序。我已经包含了 Sql CE 所需的 DLL - 这里有 7 个(C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5),我只是将它们作为应用程序文件添加到我的部署包中。
我还使用 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 运行的数据库调用都会出现此错误:
The specified store provider cannot be found in the configuration, or is not valid.
如果我从我的 app.config 中删除该条目,它可以正常工作,但对于已部署的应用程序将停止工作。
有快乐的媒介吗?我假设错误的原因是因为我在我的开发机器上安装了一个合法的 Sql CE 副本,无论出于何种原因,在我的 app.config 中注册它会导致它崩溃,尽管我不完全明白为什么.
提示?有什么建议吗?
提前致谢。
【问题讨论】:
【参考方案1】:我应该做更多的搜索。我发现了问题,看来我需要在添加之前删除提供程序。当实际安装 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>
【讨论】:
以上是关于“Bin Deploy”Sql CE 3.5 SP2 & 已安装时出错的主要内容,如果未能解决你的问题,请参考以下文章
Sql Server CE 3.5 和 .NET Compact Framework 2.0 SP2
TableDirect 表访问的 SQL CE 3.5 问题