2010-04-28 41 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上提出的一个前面的问题,并得到了好几个很好的回答。

相关问题