【问题标题】:SQL Server Compact 4.0 DbProvider - NoSQL Server Compact 4.0 DbProvider - 否
【发布时间】:2015-11-24 18:03:26
【问题描述】:

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

我正在关注博客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 成为 yes?

谢谢

编辑 我添加了 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>

嗯……其他的都不见了。

【问题讨论】:

  • 删除并重新安装 SQL Server Compact 4.0 以更新您的 machine.config 文件
  • 感谢您的快速回复!!我已经关闭了 VS2013,去控制面板卸载“Microsoft SQL Server Compact 4.0 x64 ENU”。安装“Microsoft SQL Server Compact 4.0 x64 ENU”。打开VS2013。 SQL Server Compact Toolbox 仍然显示 DbProvider 为否。我只是去 google machine.config!
  • 您的 x86 machine.config 可能在 dbproviderfactories 部分中包含无效条目
  • 我在 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 下找到 machine.config。我会用细节更新问题。
  • 你找错地方了,VS 2013 使用 .net 4,5 - C:\Windows\Microsoft.NET\Framework\v4.0.30319

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 与此相关的一些问题已在工具箱的最新版本中得到修复
【解决方案2】:

好的,我终于设法克服了这一点。

我卸载了 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 服务器,此处 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 正确识别数据库而不会出错。我希望这可以帮助遇到同样问题的其他人。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多