C# 允许用户将数据保存到文件

C# 允许用户将数据保存到文件,c#,.net,sql,database,C#,.net,Sql,Database,对于在我的应用程序中实现用户保存的文件,有没有比这更有效的方法 我正在将C/.Net与Sql Server一起使用 我的目标是: 我希望允许用户将创建的数据点与其他一些结构化数据一起保存到具有任意扩展名的项目文件中 拟议方法: 将每个数据点与FileID列一起存储在数据库中 当用户保存文件时,获取所有数据点:选择*。。。其中FileID=@CurrentFileID。 将所有这些数据点导出到XML文件。 从数据库中删除所有这些数据点。 将XML文件另存为项目文件或项目文件的一部分。 每次用户加载

对于在我的应用程序中实现用户保存的文件,有没有比这更有效的方法

我正在将C/.Net与Sql Server一起使用

我的目标是:

我希望允许用户将创建的数据点与其他一些结构化数据一起保存到具有任意扩展名的项目文件中

拟议方法:

将每个数据点与FileID列一起存储在数据库中 当用户保存文件时,获取所有数据点:选择*。。。其中FileID=@CurrentFileID。 将所有这些数据点导出到XML文件。 从数据库中删除所有这些数据点。 将XML文件另存为项目文件或项目文件的一部分。 每次用户加载他们的项目文件时,将数据从XML导入到数据库中。 显示数据库中FileId=当前文件ID的数据点。 备选方案:
使用Sqlite并为每个用户的项目创建一个单独的Sqlite数据库文件?

最佳答案取决于几个因素。通过询问一些关于数据使用的探索性问题,您可以帮助自己获得最佳的实现

我想问的第一个问题是:您现在或将来是否有任何理由将数据点作为离散字段存储在数据库中

在需要使用这些数据点的环境中思考这个问题

例如,如果您需要能够根据某些条件将它们拉入报表或一次仅导出其中的一部分,那么几乎肯定需要将它们作为离散值存储在数据库中

但是,如果这些点仅作为一个完整的集合在应用程序中使用,并且每次都必须分解和重新组装XML,那么您可能希望将完整的XML文件作为blob存储在数据库中。这将使存储、备份和更新操作变得非常简单,但也会限制未来的灵活性

我倾向于使用第一种方法离散字段,但如果设想数据的任何其他用途是一种延伸,并且如果需要使用离散字段,那么将BLOB中的数据转换为表格数据(如果需要)应该是一个相对简单的练习,那么您可以很容易地从第二种方法开始

您还可以通过提出其他问题来完善答案:

数百、数千、数百万、数十亿的数据量是多少

每秒、每分钟、每天、每年插入和更新x的频率是多少

所需的响应时间(毫秒,秒)是多少并不重要

如果每秒需要插入数十万个点,最好将数据存储为blob

然而,如果您一天只需要插入几百个点,那么最好从表格方法开始


它可能会变得复杂,但通过探索数据在场景中的使用方式,您应该能够为您的系统找到一个非常好的答案。

如果您已经有了数据库,为什么不直接使用它?@Blorgbeard:但我希望允许用户创建的项目文件在软件的其他计算机安装上使用,这些安装当然不会有相同的数据库。因此,它就像一个导出/导入功能。那么我看不出有必要从原始数据库中删除OK。因此,一个步骤是不必要的。但是,当我将XML数据重新导入到数据库中时,如果给定表中已经存在该数据,是否会花费更长的时间或发生冲突?