2010-05-31 50 views
1

我正在研究需要存儲數據的winforms桌面應用程序。我做了一個嘗試嵌入數據庫的非常糟糕的決定。我已經試過:所有嵌入式數據庫無法打開連接

  • SQLite的
  • VistaDB的
  • 的SQL Server Compact

在每一種情況下,我能夠在我創建的基本架構生成實體框架模型。我有一個事件添加了我一直用來測試這些數據庫的數據。

那麼,我一直使用EF添加一條新記錄,發現它並沒有實際插入記錄。在調試中,我檢查了上下文對象以查看發生了什麼。事實證明,它是在說「底層提供商未能開放」,或者是這種情況。它沒有拋出異常,只是沒有插入記錄。

對於所有3個嵌入式數據庫都發生過同樣的事情 - 提示我通過密集的頭部來獲得它,因爲我的配置必須有問題。

嗯,我試圖用sqlconnection和sqlcommand編寫一些基本的sql。這次它拋出一個異常。在SQL Server Compact案例中,它現在說:

建立與SQL Server的連接時發生網絡相關或實例特定的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供商:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)

我想也許是一個問題是app.Config中的路徑。所以我改變了連接字符串:

注意,我簡化從任何可能有空格走的路徑和使用引起的問題的數據目錄廢話調試時目錄不匹配的預配​​置值可以避免數據目錄。我正在運行Windows 7;我想也許這可能是一個訪問問題 - 所以我嘗試在管理員模式下運行VS 2010。沒有運氣。我還安裝了Sql Server Compact SP2,認爲這可能是一個錯誤。沒有運氣。

無論如何,我準備把我的頭髮拉出來。我對這件事情處於緊迫的最後期限,並沒有期望花一天時間來弄清楚發生了什麼。

+0

因爲它,我懷疑任何人都可以回答你的問題。需要更多細節 – 2010-05-31 05:31:41

+0

對不起,由於某些原因代碼沒有通過。這裏是連接字符串: rsteckly 2010-05-31 06:14:33

+0

我設法使用VistaDB 4和5與EF代碼第一,但我也諷刺(在VistaDB 5的情況下)得到這個「下層提供商未能打開」。 Vista DB支持比SQL Compact或SQLite更多的東西(包括併發寫入!) – Prokurors 2014-03-23 16:44:27

回答

1

使用SqlCeConnection

+0

好的,這固定了它 - 至少在涉及到使用SqlConnection和SQLCommands時。 實體框架呢? EF可以使用SQL Server Compact嗎? – rsteckly 2010-05-31 06:20:19

+0

嗯,我沒有用過它。您可以檢查有關SQL Server Compact 3的限制。5 Service Pack 1聯機叢書,實體框架(SQL Server Compact)http://technet.microsoft.com/en-us/library/cc835494%28SQL.100%29.aspx – volody 2010-05-31 14:03:16

+0

因此它支持EF。但是,我立即注意到了一個限制。使用EF時,SQL Server Compact 3.5 SP1不支持自動增量主鍵。你需要自己增加密鑰。我使用了我發現的擴展方法來獲取最新的id並將其增加。但是,我仍然不得不每次都手動分配值。 – rsteckly 2010-06-01 19:25:00