使用数据库并部署应用程序
Posted
技术标签:
【中文标题】使用数据库并部署应用程序【英文标题】:using a database and deploying the application 【发布时间】:2010-04-28 21:50:17 【问题描述】:我有一个 WPF 应用程序,它在 XML 文件中存储大量信息,并且当用户使用该应用程序时,他们将更多信息添加到 XML 文件中。它基本上使用 XML 文件作为数据库。由于在程序的整个生命周期中 XML 文件变得相当大,并且我一直在考虑将数据放在网站上,因此我一直在研究如何将所有信息移动到 SQL 数据库中。
我曾将 SQL 数据库用于 Web 应用程序(php、Ruby 和 ASP.NET),但从未用于桌面应用程序。理想情况下,我希望能够将所有信息保存在一个数据库文件中,并将其与应用程序一起分发,而不需要用户连接到远程数据库(因此他们不需要互联网连接——尽管最终会是如果可以将本地文件的版本与某处的在线版本进行比较并在必要时进行更新,那就太好了),并且无需让他们在计算机上安装本地数据库服务器。这可能吗?
我还想将 LINQ 与任何新的数据库解决方案一起使用,因此切换到数据库不会强制进行很多更改(我使用 LINQ 读取 XML)。
我确定有人问过这个问题,并且已经有一些关于这个主题的好教程,但我就是找不到。
【问题讨论】:
【参考方案1】:SQLite 是一个很好的嵌入式数据库,您可以将它与您的应用程序一起发布。我只做了一些原型设计,所以我个人不能 100% 肯定地说它会满足你的需求。但从我所读过的内容以及我所写的反对它的内容来看,它似乎适合这份工作。
SQLite Homepage
ADO.NET Provider
【讨论】:
猜猜这应该是一个全新的问题,而且可能很愚蠢,但是 ADO.NET 和 LINQ 如何结合在一起呢?我的印象是 LINQ 是一个更新的数据库访问层,旨在取代 ADO.NET,还是 LINQ 与 ADO.NET 兼容?谢谢,也谢谢你推荐 SQLite! 使用System.Data.SQLite,您可以使用 Linq-To-Sql 或 Linq-To-Entities。我在最近的项目中使用了带有实体框架的 SQLite,它的效果非常好。对于本地桌面应用程序的需求,它绝对很棒。没有数据库服务器安装,没有大惊小怪。我什至运行了一些内部测试,在大约 300K 的相同行中,SQLite 在某些查询上的性能比 SQL Server 2008 Express 高出 2.5 倍 - 3 倍。【参考方案2】:如果您知道所有对象将如何组合在一起,则可以对它们进行序列化/反序列化,以将它们作为一组 ProtoBuf 对象存储在磁盘上(当然,取决于它们的大小)。我发现它是存储一组相互关联的类的一个非常简单、优雅的解决方案。每个应该可以保存的类,你的所有数据,都可以使用这个方法序列化,然后根据需要进行恢复。
Here 是指向它的 .NET 链接。
This 是我之前在 SO 上提出的问题,得到了几个很好的回答。
【讨论】:
以上是关于使用数据库并部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Monotouch - 在 monotouch 项目中附加 Sqlite 数据库并部署到 iPad
使用 Access 数据库部署 C# 应用程序,无需安装 Access
如何部署 GOOGLE_APPLICATION_CREDENTIALS 并使用 Elastic Beanstalk 从 Django 应用程序部署中使用
如何在新浪云sae上安装部署laravel5.1应用并测试数据库连接