我已经就What would be a good approch for using XML as data persistence for a small C# app?提供了一般指导原则。
我决定在引擎盖下使用XML。这是一个小应用程序,一个供教师使用的报告卡应用程序。这些是我的主要实体:
我有一些我想要的建议:
答案 0 :(得分:2)
一个XML文件可能更容易。
该文件可能如下所示:
<ReportCardData>
<Students>
<Student>...data for student A ...</Student>
...
</Students>
<Teachers>
<Teacher> ...
...
</Teachers>
<Courses>
<Course> ...
...
</Courses>
</ReportCardData>
C#中的代码如下所示:
public class ReportCardData
{
public List<Student> Students;
public List<Teacher> Teachers;
public List<Course> Courses;
}
反序列化(读取)数据的代码如下所示:
ReportCardData rcd = null;
var s= new System.Xml.Serialization.XmlSerializer(typeof(ReportCardData>));
using(System.IO.StreamReader reader= System.IO.File.OpenText(filepath))
{
rcd= (ReportCardData) s.Deserialize(reader);
}
...务必添加适当的异常处理等。
使用XML Serialization可以正常工作,即使对于具有数十兆字节的大型数据集也是如此。 (如果你在谈论100兆字节的数据,那么可以考虑像SQL Express这样的真实数据库)
阅读和写作表现可能会很好。 请记住,当您从XML文件反序列化数据时,整个数据集将保存在应用程序的内存中。因此,如果它是15mb的等级数据,那么它一次都在内存中。
您还询问了“数据加入视角” - 不确定这意味着什么,但使用Linq to XML,您可以跨该数据执行查询。内存中查询的性能也很好。