在 WPF 应用程序中本地保存数据的最佳方法是啥?

Posted

技术标签:

【中文标题】在 WPF 应用程序中本地保存数据的最佳方法是啥?【英文标题】:What's the best way to save data locally in a WPF Application?在 WPF 应用程序中本地保存数据的最佳方法是什么? 【发布时间】:2009-11-01 19:46:11 【问题描述】:

我正在构建一些WPF 应用程序来管理我的时间。我想为项目的工作时间节省一个日历日的时间跨度。

所以我的问题是如何保存数据的最佳选择是什么?我想我可以使用 XML 文件、Access 数据库文件或属性。我想在本地保存数据,所以在这种情况下没有SQL Server 操作。 :)

你怎么看,走哪条路?

【问题讨论】:

【参考方案1】:

我会以纯形式或 .NET 友好形式获取 SQLite(在 Google 上搜索“sqlite .net”将为您提供一些选择)。它超级便携,在我看来,它比 SQL Server compact 更容易设置和分发。

重要的是确保您不会与代码中的持久性机制过于紧密耦合,以便将来您可以轻松替换任何您想要的存储策略。

【讨论】:

【参考方案2】:

我知道您说没有 SQL Server,但我读到这意味着您不需要“服务器”,并且您希望将数据存储在客户端上。我还假设您可能不会介意您的数据的一些可管理性。你知道的,比如备份。交易总是很好,因此您的数据可以保持一致。因此,虽然您可以使用 XML(请从您的脑海中消除所有关于 Access 的想法),但当这是一个已解决的问题时,您最终会滚动自己的持久性。

所以,请查看免费的SQL Server Compact 版本。它是轻量级的,旨在在桌面或移动设备上运行,并且如果您的应用程序需要这样做,它很容易部署。所有常见的持久性框架都支持它。我有没有提到它是免费的(因为不花钱)?

【讨论】:

我自己的个人沙箱项目或多或少是一回事。我选择使用 SqlCE 作为学习 Linq2Sql 的一种方式。如果我要再做一次,我可能会选择使用带 ADO 的 SqlCE,或者(如果可行,尚未进行研究)在线使用 Amazon、google 或 MS 云服务的东西。 为什么不使用 SQLite?它与 .NET 的所有东西都很好地集成在一起,并作为单个文件驻留在文件系统上。 我也投票给 SQLite。顺便说一句,它有一个实体框架提供程序。 我对 Richard 使用 SQL Server 还是 SQL Lite 无所谓。我的观点基本上是“既不是 XML 也不是 Access,因为这是一个已解决的问题,所以请使用已经证明的轻量级、强大、可管理、事务处理的解决方案”。感谢您指出 SQL Lite 的存在。如果我自己构建它,我会默认使用 SQL Server,因为我整天都在使用它的老大哥。 (我可能仍然会,但至少我知道现在还有其他选择。)这种反馈就是我这样做的原因。【参考方案3】:

我建议尽可能选择最简单的数据源并将其适当地解耦,以便以后在确定适合您的目的时可以插入一个新的、不同的数据源。为此,您可能会发现 XML 甚至纯文本之类的东西是可能可行的最简单的东西。

根据您的实际使用情况确定您需要的数据源特征后,选择适当的后备存储。

我认为提前做出这个决定并不重要,因为这是一个个人项目,而不是商业项目。

【讨论】:

【参考方案4】:

我过去使用过的一种非常简单的方法是您的“xml 文件”想法。只需创建一个描述您关心的数据的对象,然后将其序列化为 xml。

Greg 说的完全正确,他说请确保您的数据源已正确解耦,以便在您的需求发生变化时将其切换出去。

【讨论】:

以上是关于在 WPF 应用程序中本地保存数据的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

遵循 MVVM 模式在 WPF 应用程序中处理导航的最佳方法是啥?

在 WPF PRISM/MVVM 应用程序中避免内存泄漏的最佳方法是啥

c# 在 c# 应用程序中保存配置数据的最佳方法是啥。 [复制]

在 WPF 控件上显示“加载”指示器的最佳方法是啥

从 WPF 打印/报告的最佳方法是啥? [关闭]

解析服务器:用远程数据更新本地存储的最佳方法是啥