2010-04-28 43 views
0

我有一個WPF應用程序,它將大量信息存儲在XML文件中,當用戶使用應用程序時,他們會向XML文件添加更多信息。它基本上使用XML文件作爲數據庫。自從程序生命週期以來,XML文件變得非常龐大,我一直在考慮將數據放在網站上,我一直在研究如何將所有信息移動到SQL數據庫中。使用數據庫並部署應用程序

我已經使用SQL數據庫與Web應用程序(PHP,Ruby和ASP.NET),但從來沒有與桌面應用程序。理想情況下,我希望能夠將所有信息保存在一個數據庫文件中,並將其與應用程序一起分發,而無需用戶連接到遠程數據庫(因此它們不需要互聯網連接 - 儘管最終它會是不錯,如果可以將本地文件的版本與某個在線的某個在線進行比較,並在必要時進行更新),而不必讓他們在其計算機上安裝本地數據庫服務器。這可能嗎?

我還想用任何新的數據庫解決方案使用LINQ,所以切換到數據庫不會強制許多更改(我用LINQ讀取XML)。

我敢肯定這個問題已被問及已經有一些關於這個主題的很好的教程,但我找不到它們。

回答

1

SQLite是一個很好的嵌入式數據庫,您可以隨應用程序一起發貨。我沒有做過太多的原型設計,所以我個人不能100%肯定地說它會滿足你的需求。但是從我讀到的和我寫的反對它的文章來看,這似乎適合於這份工作。

SQLite Homepage

ADO.NET Provider

+0

猜測這應該是一個全新的問題,並且可能很愚蠢,但ADO.NET和LINQ如何融合在一起?我印象深刻LINQ是一個更新的數據庫訪問層,意在取代ADO.NET,還是與ADO.NET兼容?謝謝,並感謝您建議SQLite! – evan 2010-04-28 22:15:14

+0

http://msdn.microsoft.com/en-us/library/bb399365.aspx – 2010-04-28 22:56:30

+0

使用[System.Data.SQLite](http://sqlite.phxsoftware.com/),您可以使用Linq-To-Sql或Linq-To-Entities。我在最近的項目中使用了SQLite和Entity Framework,它的工作非常好。對於本地桌面應用程序的需求,這絕對是好事。沒有數據庫服務器安裝,沒有大驚小怪。我甚至運行了一些內部測試,並且約有300K的相同行,在某些查詢中,SQLite的性能比SQL Server 2008 Express高出2.5倍-3倍。 – wpfwannabe 2010-04-29 07:26:51

0

如果你知道你的對象都將結合在一起,你可以序列他們/反序列化它們,將它們存儲在磁盤上,一組ProtoBuf對象(取決於它們的大小, 當然)。我發現這是一個非常簡單,優雅的存儲一組互連類的解決方案。應該可以保存的所有類都可以使用此方法進行序列化,然後根據需要進行恢復。

Here是它的.NET鏈接。

This是我在SO上提出的一個前面的問題,並得到了好幾個很好的回答。

相關問題