4

我正在使用 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 工具,请确保已安装 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>

嗯……其他的都不见了。

4

2 回答 2

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 for the sql server 和此处如何完全卸载 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 正确识别数据库而不会出错。我希望这可以帮助遇到同样问题的其他人。

于 2015-09-06T15:08:52.143 回答
0

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

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

无法保存此连接以用于 EF6 工具,请确保已安装 SQL Server Compact DbProvider,并可能重新启动 Visual Studio

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

在此处输入图像描述

于 2017-03-26T13:16:26.047 回答