创建要导入 - 导出的文件:如何保存实体层次结构

时间:2017-08-03 10:13:15

标签: c# file export binaryfiles

背景

我正在为我工​​作的公司开发内部应用程序。

该公司是一个工业工程咨询公司,我们必须研究时间,方法等。

问题是,我现在正在创建内部版本,它将生成方法,获取输入等。

我正在运行一个REST API,它将在办公室的本地网络中运行,其中包含用户信息,用户在哪些项目中工作等等......但随后它出现了困难部分我不知道如何处理。

我的老板要求所有内容都应该在文件中,这样他每天都可以备份。实际上,它们使用Excel文件,并且所有内容都组织在本地服务器/存储库上,文件夹层次结构中包含所有这些excel文件。

现在,他们正在为客户提供一个USB Pendrive,其中包含Excel中的所有文件夹等等:不太专业,你可以猜到。使用这个新软件的目标是为客户端提供一个应用程序(稍后将开发),在那里他们可以打开一个名为projectname.project的文件,或类似的东西。当导入文件时,他们获得了所有项目,他们可以看到所有的信息,研究,统计等等。

问题

系统的层次结构分为以下几种:

  
      
  • 公司      
        
    • 项目1
    •   
    • 项目2
    •   
    • 项目3      
          
      • 报告类型1
      •   
      • 报告类型2
      •   
      • Study 1
      •   
      • Study 2
      •   
      • 研究3      
            
        • 任务1
        •   
        • 任务2
        •   
        • 任务3
        •   
      •   
    •   
  •   

现在,对于我们员工使用的本地应用程序,所有内容都是单独存储的,并在内部服务器中根据需要加载。我正在选择二进制保存文件,正如在SO上的许多答案中找到的那样。

当我必须以客户端可以导入和完全查看的某种格式导出此文件时出现问题:他无法接收10个文件,他必须收到一个加载客户端应用程序上的所有项目(待开发)。

问题

据说,信息存储在本地文件中,由MySQL数据库引用,它们之间建立了关系,用户等等。

如何通过电子邮件生成可以通过电子邮件发送给客户端的任何扩展名的文件,他们只需转到新应用程序,只需打开文件即可访问我上面写的所有层次结构那些台词?这个过程就像合并所有文件一样,但我该怎么办呢?

我的第一种方法是创建另一个应用程序(或应用程序中的一个部分),它将生成一个名为Project的巨大对象类,然后将该项目对象保存到文件中,但我不确定它是否会起作用,因为每项研究可能有100项任务,每个项目都有50项研究......

实际代码

关于这个问题没什么可说明的,我现在对项目的每个部分做的是将Object Class保存到文件中并在数据库中引用它。

我生成文件并按如下方式阅读:

public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
{
    using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream, objectToWrite);
    }
}

public static T ReadFromBinaryFile<T>(string filePath)
{
    using (Stream stream = File.Open(filePath, FileMode.Open))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        return (T)binaryFormatter.Deserialize(stream);
    }
}

0 个答案:

没有答案