对于如何将XML用作小型C#应用程序的数据持久性,我需要一些意见。这是一个独立的应用程序,用户不共享相同的数据持久性,因此,文件访问是排他性的。这就是我最初想到XML的原因。
我知道我的设计模式,所以如果我编写了通常的层,我可以隔离持久性,然后在需要时更改它。再说一遍,这是一个小应用程序,所以我需要写得很快。
我应该只使用Linq来实现XML并完成它吗?如果是这样的话,如果我决定用嵌入式数据库替换XML,我的重写工作会是什么呢?在XML文件中写入Linq的性能如何?
但是如果我不和Linq一起去,你们会有什么建议?
更新
根据我得到的评论,我可能需要更多的说明。这是一个教师使用的报告卡应用程序。这些是我的主要实体:
现在有一些问题:
还有一些评论
IEnumerable<MyEntity>在输入和输出上与“持久性类实例”进行接口。这给了我灵活性。发布于 2011-04-18 13:45:09
我建议你:
发布于 2011-04-18 13:50:44
以这种方式使用Server紧凑型可能容易得多,使用实体框架工具更容易,以后还可以选择迁移到成熟的Server。
发布于 2011-04-18 13:49:32
如果您同时编写整个文档,XML/JSON效果最好,尝试添加数据也可以,但在某个时候,您可能希望在文档/文件中间插入/更新部分数据,即当它变得毛茸茸的时候。
如果您可以使用这样的解决方案:将数据读入内存(一次或部分通过查询),然后稍后将其全部写入文件,那么它可以很好地处理单个XML/JSON文件。只要您不需要定期更新/插入/删除文件中的部分数据,文件就应该这样做(尽管性能可能是一个问题)。
我多次使用的一种方法是定义XSD架构,包括约束、数据类型等,然后设置一个预构建步骤,该步骤会自动为您生成可序列化的C#类层次结构(例如使用XSD.exe)。使用常规的XML序列化功能,可以非常容易地将整个文档加载到内存中,读取/操作它(query/update/insert/delete),然后将整个对象层次结构序列化回XML。
有关XSD.exe的信息,请参阅XSD.exe。
这种方法很快就为您提供了一个非常有用和坚实的基础。这应该足够一段时间,但是如果您不从一开始就从内部抽象出数据访问,那么您可能需要重写相当多的内容,如果您稍后要转向基于数据库的解决方案。
如果纯基于文件的解决方案是不够的,可以选择某种面向数据库的解决方案,最好是某种嵌入式数据库,例如SqlLite或BerkeleyDb。
https://stackoverflow.com/questions/5703783
复制相似问题