我正在开发一个需要存储数据的 winforms 桌面应用程序。我做出了尝试嵌入数据库的非常糟糕的决定。我试过了:
- SQLite
- 维斯塔数据库
- 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,认为这可能是一个错误。没运气。
不管怎样,我已经准备好把我的头发拉出来了。我在这件事上的最后期限很紧,没想到会花一天时间弄清楚发生了什么。