2012-07-18 60 views
0

我有WinForms應用程序正在構建,並且正在使用SQL Server Compact Edition 3.5。如何解釋此SQL Server CE行爲 - 不更新

每當我運行WinForms應用程序,然後我在Visual Studio中打開查詢編輯器後,我運行的任何更新查詢都不會反映在應用程序中。如果我運行Select查詢來查看更新的記錄,我可以從查詢結果中看到數據已更改但未在應用程序中反映出來。

如果關閉應用程序並再次運行應用程序,則更新會反映出來。

這是正常的嗎?這個最好的解釋是什麼?

UPDATE

從C#

string sqlceConnString = @"Data Source=|DataDirectory|\medicstores.sdf"; 

來自新的查詢連接窗口在Visual Studio

C:\Users\user12345\...\Visual Studio 2010\Projects\StockPro\StockProFormUI\medicstores.sdf 

更新

我認爲這可能是由於應用程序複製數據庫文件複製到\StockPro\StockProFormUI\bin\Debug\medicstores.sdf而不是使用\StockPro\StockProFormUI\medicstores.sdf

我覺得|DataDirectory|被這使得它從物理文件中\StockPro\StockProFormUI\medicstores.sdf一個新的副本,因此它們是不一樣的

+1

顯示您的連接字符串。幾乎每一次,這個問題都是因爲你連接到你的.sdf文件的兩個不同的副本。 – 2012-07-18 22:56:23

+0

但是當我關閉Winform應用程序並重新運行時,更新變得可見。如果查詢窗口首先打開,數據庫文件被鎖定,所以應用程序不會運行。這表明他們正在訪問相同的文件 – codingbiz 2012-07-18 23:10:29

+0

我認爲這可能是由於應用程序複製數據庫文件將其複製到'\ StockPro \ StockProFormUI \ bin \ Debug \ medicstores.sdf'而不是使用'\ StockPro \ StockProFormUI \ medicstores。 sdf' – codingbiz 2012-07-18 23:45:16

回答

2

檢查你的連接字符串首次應用解析爲\StockPro\StockProFormUI\bin\Debug\medicstores.sdf

斷開您的服務器資源管理器上的SQL CE數據庫。

我也有過這個問題。 您需要獲取sqlce數據庫的確切位置,然後更改連接字符串。

測試它首先將您的sqlce放在您的驅動器c:\上並添加Persist Security Info = False;最後。並使用確切的數據庫文件路徑。

private SqlCeConnection conn = new SqlCeConnection("Data Source=C:\\medicstores.sdf;Persist Security Info=False;"); 

您可以使用SQL CE工具查看您的SQLCE數據庫,而不是使用visual studio。

SQL Server CE Query Tool - Code Porject

問候

+0

但是當我關閉Winform應用程序並重新運行時,更新變得可見。您是使用EF還是ado.net,請使用 – codingbiz 2012-07-18 23:09:07

+0

? – BizApps 2012-07-18 23:10:48

+0

我正在使用純ADO.Net – codingbiz 2012-07-18 23:11:41