首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将XML用作小型C#应用程序的数据持久性的好方法是什么?

将XML用作小型C#应用程序的数据持久性的好方法是什么?
EN

Stack Overflow用户
提问于 2011-04-18 13:42:35
回答 3查看 907关注 0票数 6

对于如何将XML用作小型C#应用程序的数据持久性,我需要一些意见。这是一个独立的应用程序,用户不共享相同的数据持久性,因此,文件访问是排他性的。这就是我最初想到XML的原因。

我知道我的设计模式,所以如果我编写了通常的层,我可以隔离持久性,然后在需要时更改它。再说一遍,这是一个小应用程序,所以我需要写得很快。

我应该只使用Linq来实现XML并完成它吗?如果是这样的话,如果我决定用嵌入式数据库替换XML,我的重写工作会是什么呢?在XML文件中写入Linq的性能如何?

但是如果我不和Linq一起去,你们会有什么建议?

更新

根据我得到的评论,我可能需要更多的说明。这是一个教师使用的报告卡应用程序。这些是我的主要实体:

  • 学生
  • 课程
  • 老师(应该只有一个,但我会储存它,因为将来有整合的可能性)
  • 年级(每门课学生可以有一个以上的年级)

现在有一些问题:

  • 在幕后,每个实体应该有一个XML文件吗?
  • 在幕后,我应该使用Linq来实现XML吗?还有什么其他的事情要考虑吗?

还有一些评论

  • 我理解我应该使用IEnumerable<MyEntity>在输入和输出上与“持久性类实例”进行接口。这给了我灵活性。
  • 虽然我对建议非常开放,但我现在真的不想考虑嵌入数据库。这个小应用程序是一个令人兴奋的机会去工作和试验新事物的生产(不仅仅是测试)和小风险。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-18 13:45:09

我建议你:

  • 定义一个模型(一个类),表示需要存储的数据(可以是层次结构)
  • 如果需要,可以使用序列化将其序列化或反序列化为XML或二进制,甚至JSON。
票数 7
EN

Stack Overflow用户

发布于 2011-04-18 13:50:44

以这种方式使用Server紧凑型可能容易得多,使用实体框架工具更容易,以后还可以选择迁移到成熟的Server。

票数 3
EN

Stack Overflow用户

发布于 2011-04-18 13:49:32

如果您同时编写整个文档,XML/JSON效果最好,尝试添加数据也可以,但在某个时候,您可能希望在文档/文件中间插入/更新部分数据,即当它变得毛茸茸的时候。

如果您可以使用这样的解决方案:将数据读入内存(一次或部分通过查询),然后稍后将其全部写入文件,那么它可以很好地处理单个XML/JSON文件。只要您不需要定期更新/插入/删除文件中的部分数据,文件就应该这样做(尽管性能可能是一个问题)。

我多次使用的一种方法是定义XSD架构,包括约束、数据类型等,然后设置一个预构建步骤,该步骤会自动为您生成可序列化的C#类层次结构(例如使用XSD.exe)。使用常规的XML序列化功能,可以非常容易地将整个文档加载到内存中,读取/操作它(query/update/insert/delete),然后将整个对象层次结构序列化回XML。

有关XSD.exe的信息,请参阅XSD.exe

这种方法很快就为您提供了一个非常有用和坚实的基础。这应该足够一段时间,但是如果您不从一开始就从内部抽象出数据访问,那么您可能需要重写相当多的内容,如果您稍后要转向基于数据库的解决方案。

如果纯基于文件的解决方案是不够的,可以选择某种面向数据库的解决方案,最好是某种嵌入式数据库,例如SqlLiteBerkeleyDb

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5703783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档