SQL Server Compact 4.0 DbProvider - 否

时间:2015-08-30 16:32:24

标签: c# visual-studio-2013 sql-server-ce-4 sql-server-ce-toolbox

我正在使用ErikEJ的Visual Studio SQL Server Compact / SQLite工具箱。环境是使用Visual Studio 2013.5的Windows 7 x64

我正在关注博客http://erikej.blogspot.dk/2013/11/entity-framework-6-sql-server-compact-4_25.html中的示例,但是当我到达

“...连接到项目文件夹中的数据库文件:”,

我右键单击“添加SQL Server Compact / SQLite连接”,框出现,但底部是红色

“无法保存此连接以与EF6 Tools一起使用,请确保已安装SQL Server Compact DbProvider,并可能重新启动Visual Studio”

我回去点击“关于”按钮并获取

SQL Server Compact 4.0 in GAC - Yes - 4.0.8482.1 
SQL Server Conpact 4.0 DbProvider - No

SQL Server Compact 4.0 DDEX provider - No 
SQL Server Compact 4.0 Simple DDEX provider - Yes
SQL Server Compact 4.0 Engine Test: PASS!

我已经卸载了SQL Server Compact和SQL Server Compact Toolbox并重新安装了两者,但我仍然有同样的错误。

我想知道如何让SQL Server Compact 4.0 DbProvider成为是的?

由于

编辑 我已经添加了machine.config相关部分的详细信息,其中可能包含无效条目。

<system.data>
    <DbProviderFactories>
        <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <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>

我已经针对此处https://developer.teradata.com/blog/netfx/2010/12/dbproviderfactories-demystified的示例检查了上述内容,我看不出该部分明显错误。

啊哈。我在找错了地方。在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config我有

<system.data>
    <DbProviderFactories><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>
嗯......其他的都不见了。

2 个答案:

答案 0 :(得分:4)

好的,我终于设法超越了这一点。

我卸载了Visual Studio 2013和SQL Server Express。我在使用此处列出的过程https://dba.stackexchange.com/questions/68373/how-to-uninstall-sql-server-2012-not-showing-in-control-panels-programs-and-fe之前为sql server和How to completely uninstall Visual Studio 2010?使用

之前完成了此操作
D:\vs_community.exe /uninstall /force

之前我已经完成了这个并重新安装了VS2013.5但是我想出了上面的错误,这提示了这个问题。因此,根据以上页面的进一步建议,我做了

wmic product where "name like 'microsoft visual studio%'" call uninstall /nointeractive
wmic product where "name like 'microsoft sql server%'" call uninstall /nointeractive

这清除了之前留下的东西。

我还使用Revo Uninstaller卸载并使用它来扫描机器上的任何剩余痕迹。这也捡到了留下的遗留物。

毕竟,我再次安装了VS2013.5,我能够让SQL Server Compact Toolbox正确识别数据库而不会出错。我希望这可以帮助遇到同样问题的其他人。

答案 1 :(得分:0)

我知道,这是一个古老的任务,但这可能对某人有所帮助。

我有类似的问题,我得到了

  

无法保存此连接以与EF6 Tools一起使用,请确保SQL   已安装Server Compact DbProvider,并可能重新启动Visual   工作室

因此无法将DataGrid组件连接到数据库。在这种情况下,不要忘记ErikEJ提供的非常酷的按钮注册DDEX提供商(非常感谢他)

enter image description here