2011-09-19 60 views
4

這可能是一個非常基本的問題,但我正在製作基於Windows Forms的應用程序,這將涉及大量的數據存儲。它基本上是一個運動模擬器,將有數百個球隊和數千名球員參賽。在WinForms應用程序中存儲數據

所以我需要找出最好的方式來存儲這些數據。 Windows窗體是相對較新的我,因爲我已經與ASP.NET被大部分工作,但我已經想出了以下思路:包含序列化

  1. 在程序目錄緊湊型SQL數據庫
  2. 文件對象。

是否有任何其他的解決方案,在那裏,可能會更好?或者我應該選擇哪些?

回答

1

你的要求是非常模糊的,但一般遠離系列化離開任何類型的持久性數據存儲的。如果你的數據是關係型的(它有內部結構,例如「團隊必須包含玩家」或「一個玩家只能是一個團隊的成員」),那麼我建議使用關係型數據庫管理系統,如SQL Server Compact Edition或SQLite的。

如果您的數據不是關係型的,我建議您使用RavenDB這樣的關鍵/價值商店。

另外,不要把數據放在程序目錄中;它可能不能被用戶寫入。將數據存儲在用戶目錄中。

+0

感謝您的建議。它確實是關係型的,在經過一番研究後,我將使用SQL Server Compact,它與使用LINQ-to-SQL一起獲得額外獎勵 – Chris

1

如果您有任何需要執行對數據的查詢,我會從專有格式序列化是望而卻步。

如果只有一個用戶,那麼你可以做通過JET驅動程序,SQLLite或NoSQL的一些簡單的像一個訪問MDB。

如果有將要多個併發用戶,你幾乎肯定會需要看一下基於「服務器」 SQL - 例如SQL Express的(雖然注意DB大小限制)時,MySQL等

+0

沒有什麼能阻止你序列化數據,並且在反序列化數據時使用LINQ ... – Cipi

+1

是的,但其他消費者的數據如何呢?使用SSRS,Crystal等運行報表。如果在查詢數據時需要任何類型的性能,則需要索引。 – StuartLC

0

可以使用.MDB Access數據庫來存儲數據。在我的經驗中不如SQLite那樣可靠。

另外,如果你需要的窗體關閉後保存這些數據你不提?如果你不這樣做,你可能只想在內存中使用DataSet(或DataTables)來保持數據的快速訪問。

相關問題