【发布时间】: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