在.NET应用程序中,应该将应用程序数据保存在哪里?

9
我的应用程序类似于联系人管理器。假设用户可以输入带有地址的联系人。我有保存联系人到文件的代码和技术。但是,我应该把这个文件存储在哪里呢?考虑到这是在Windows上运行的.NET应用程序。我的文件应该放在用户文件夹的AppData中吗?还是应该使用隔离存储(如这里所述)?还是其他什么东西?有什么推荐的做法吗?

如果您希望用户或其他应用程序轻松找到此联系人文件,则需要使用AppData。似乎隔离存储对于这个特定问题来说是“过于强大”的解决方案。 - Chris O
我可能会将信息存储在数据库中。这个选项不可行吗?否则,使用其中一个相对于另一个有什么好处?据我所知,它们基本上只是两个不同的文件夹? - Patrick
@Chris O:在.NET中,我如何访问AppData文件夹?我的意思是,是否有一些.NET类可以提供给我该文件夹(而不是硬编码到C:\Users\等目录中)? - Peter
2
您可以使用Environment.GetFolderPath获取到AppData文件夹的路径。在SpecialFolder枚举中有一个示例。 - Patrick
2个回答

9

我最终采用了Patrick建议的解决方案:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

1

你有多种选择;正如你所说,隔离存储是其中之一。你还可以使用用户设置框架功能,将数据保存为数据块或XML。

你也可以看看SqlCompact,它是一个非常轻量级的进程内数据库。然后,你可以将所有用户联系人保存在单个数据库中,该数据库可以位于应用程序相同的目录中;你可以很容易地使用EF4作为你的DAL。

虽然这可能需要更多的努力,因为听起来你的当前架构已经完成了99%的工作。


嗯,我正在放弃基于SQL的解决方案,因为它需要太多时间和精力(为ORM构建您的领域模型,处理ORM的怪癖)。我正在使用Karvonite,这让我专注于应用程序本身。 - Peter
同时,我又进行了切换 :) 现在使用SterlingDB和Silverlight,因此有效地使用隔离存储。该项目在开始阶段有点不稳定。 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接