2014-01-15 58 views
1

我正在開發一款應用程序,該應用程序碰巧有一些需要經常更新的記錄。我想避免在客戶端PC上部署SQL Server,所以我讀了很多東西,並認爲本地的.mdf文件可能是一個解決方案(如果可以避免部署SQL Server,現在不太確定,幾天後我才意識到我可能遠離正確的LOL)。獲取本地.mdf數據庫以使用適用於桌面的VS 2013 Express的WPF C#應用程序

另外,在閱讀中,我發現有一種方法可以通過從數據源窗口中直觀地移動對象來將控件綁定到數據,所以我認爲我會節省大量時間,但最終我真的得到了困惑,因爲我無法真正寫入數據庫文件,目前可用的信息似乎非常不明確,並且不適用於VS的很多版本和風格(例如WPF,Windows Forms,vs 2008,vs 2010 ,甚至更舊的.NET框架版本),所以我認爲在這裏在stackoverflow論壇的人可能有這些事情很清楚。

所以,我有一些問題,我相信會清除我的困惑(和過這個問題沒有人來):

  1. 能否在.mdf文件實際上沒有SQL Server安裝使用嗎?

    VS有時會讓人困惑,它提供了創建本地數據庫文件而不需要安裝SQL Server,我想我會把許多事情視爲理所當然,因爲我不是一個有經驗的.NET程序員。

  2. 如果這是不可能的。有沒有其他方法可以避免在客戶端上部署SQL Server,這是否是一個有效的擔憂?

    也許我不應該擔心沒有在客戶機上部署SQL Server安裝?

  3. 我可以通過一些類似的'automagical'更新調用來直接將更改寫入數據庫嗎?我可以獲得花哨的數據綁定控件嗎?

    似乎有兩種使用應用程序管理數據庫的方法,當然,我想這樣做,只是讓這些數據綁定控件工作,因爲數據庫很大,並且沒有很多處理方式,只是存儲。

  4. DataSet是否包含數據庫的臨時副本?

    我有一個Database.mdfDataSet.xsd,並在搜索參考後,我仍然不知道這兩個傢伙究竟是怎麼回事。

+1

一組有趣的問題。我同意在客戶端上安裝SQL Server是有問題的,特別是如果你期望有廣泛的受衆。你不能使用託管在某個地方的中央數據庫,並有一個處理數據的WCF服務嗎? – paqogomez

+0

**否** - 如果您想使用'.mdf'文件,您**必須安裝**某種形式的SQL Server。 Visual Studio安裝SQL Server ** Express **作爲其正常安裝的一部分,這也是您至少需要在客戶端PC上訪問和使用'.mdf'數據庫文件的必備工具 –

+0

@paqogomez它只是一個客戶端機器,但我已經處理了很多SQL Server安裝副作用,使其他應用程序無法正常工作,也卸載它是一個大問題,所以我想支持乾淨安裝最好避免它,尤其是當應用程序將有一個真正沒有經驗的用戶是這樣的情況。 – UnbiasedMilo

回答

8
  1. 當你在項目中創建一個新的項目編號,基於服務器的數據庫模板創建一個MDF文件,並要求在所有客戶端上安裝了SQL Server Express實例。

  2. 本地數據庫模板創建一個SDF文件,它是一個SQL Server CE數據庫。儘管名稱不同,但SQL Server CE是與SQL Server(Express)完全不同的產品。 SQL Server CE不使用服務器,因此您可以將其安裝在客戶端上,也可以只使用您的應用程序部署所需的DLL。

  3. 運行數據源嚮導並選擇您的數據源。剩下的工作就是爲你完成的,只要你選擇一個支持的數據源即可。您可以直接使用SQL Server實例,SQL Server Express文件,SQL Server CE或Access。您還可以通過第三方提供商的下載來支持Oracle,MySQL和其他軟件。

  4. MDF是實際的數據文件,就像大型SQL Server用來存儲數據一樣。 XSD是DataSet的XML模式定義,與其他任何類一樣。從數據庫檢索數據時,使用表格適配器,該表格適配器是由「數據源」嚮導生成的自定義類的實例。該表適配器包裝了標準的ADO.NET連接和數據適配器對象,如果您不使用該向導,則可以使用自己的對象。表適配器的Fill方法在DataSet中填充DataTable,這也是由繼承標準DataTable和DataSet類的嚮導生成的自定義類。一旦對數據進行了所需的修改,就可以調用表適配器上的更新以將更改保存回數據庫。如果你的控件被綁定,那麼填充DataTable會自動填充你的控件,並且在控件中進行修改將自動修改DataTable中的數據。

+0

這就是我構建數據庫的方式:爲該項目執行此操作的最佳方式是使用帶有CodeFirst和SQLServer CE的EntityFramework。安裝SQLServer CE 4.0和項目A的nuget包,使用ModelFirst在項目B中實現模型,並將所有表類和Context類複製到項目A,然後使用所有複製的類構建ADO.NET實體數據模型在項目A中的CodeFirst中,在包管理器控制檯中,在項目A中鍵入Enable-Migrations,然後鍵入Add-Migration併爲其命名,然後鍵入Update-Database,然後輸入Update-Database。 – UnbiasedMilo

相關問題