【问题标题】:All embedded databases fail to open connections所有嵌入式数据库都无法打开连接
【发布时间】:2010-05-31 05:20:22
【问题描述】:

我正在开发一个需要存储数据的 winforms 桌面应用程序。我做出了尝试嵌入数据库的非常糟糕的决定。我试过了:

  • SQLite
  • VistaDB
  • SQL Server 精简版

在每种情况下,我都能够在我创建的基本架构上生成一个实体框架模型。我有一个事件添加了我一直用来测试这些数据库的数据。

好吧,我一直在使用 EF 添加新记录,发现它实际上并没有插入记录。在调试中,我检查了上下文对象以查看发生了什么。事实证明,它是在说“基础提供商未能打开”或类似的意思。它没有抛出异常,只是没有插入记录。

所有 3 个嵌入式数据库都发生了同样的事情 - 提示我通过我的密集头脑得到它,我的配置一定有问题。

好吧,我尝试使用 sqlconnection 和 sqlcommand 编写一些基本的 sql。这次它抛出一个异常。在 SQL Server Compact 案例中,它现在表示:

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)

我认为 app.Config 中的路径可能有问题。所以我把连接字符串改成:

请注意,我简化了路径,远离任何可能有空格的内容,并避免使用数据目录的废话,当调试目录与数据目录的预配置值不匹配时会导致问题。我正在运行 Windows 7;我想这可能是一个访问问题——所以我尝试在管理员模式下运行 VS 2010。没运气。我还安装了 Sql Server Compact SP2,认为这可能是一个错误。没有运气。

不管怎样,我已经准备好拔掉我的头发了。我在这件事上的最后期限很紧,没想到会花一天时间弄清楚发生了什么。

【问题讨论】:

  • 就目前而言,我怀疑任何人都可以回答您的问题。需要更多细节
  • 对不起,由于某种原因,代码没有通过。这是连接字符串:跨度>
  • 我设法将 VistaDB 4 和 5 与 EF Code-first 一起使用,但我也偶尔(在 VistaDB 5 的情况下)得到这个“底层提供程序无法打开”。 Vista DB 支持比 SQL Compact 或 SQLite 更多的东西(包括并发写入!)

标签: .net sql-server sql-server-ce vistadb


【解决方案1】:

使用 SqlCeConnection

【讨论】:

  • 好的,这解决了它——至少在使用 SqlConnection 和 SQLCommands 时是这样。实体框架呢?是否可以将 SQL Server Compact 与 EF 一起使用?
  • 嗯,我没用过。您可以查看有关 SQL Server Compact 3.5 Service Pack 1 联机丛书、实体框架 (SQL Server Compact) technet.microsoft.com/en-us/library/cc835494%28SQL.100%29.aspx 的限制
  • 所以它确实支持 EF。但是,我立即注意到了一个限制。 SQL Server Compact 3.5 SP1 不支持在使​​用 EF 时自动递增主键。您需要自己增加密钥。我使用了一种我发现的扩展方法来获取最新的 id 并增加数字。但是,我仍然必须每次手动分配值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2016-06-05
相关资源
最近更新 更多