如何仅检测上传文件中的更改?

时间:2012-01-02 17:20:19

标签: c# asp.net xml file crud

如果我有一个xml文件(上传到我的服务器),并且我对其进行了一些处理以从中获取数据,那么将这些数据存储在我的数据库中。

如果用户进行了一些更改(插入,更新,删除),则将文件再次上传到我的服务器。有没有办法检测更改(插入,更新,删除)来更新我的数据库,而不仅仅是删除所有数据并再次插入它们。特别是,有一些数据取决于现有数据(参照完整性)和如果我删除所有数据,将删除家属。(级联删除)!!

注意:

  • 我存储文件哈希,所以我知道是否发生了一些变化 自上次上传以来。

1 个答案:

答案 0 :(得分:3)

Darin在评论中指出,这在很大程度上取决于XML文件和数据库的结构和内容。

原则上,您当前删除了一定数量的表中的一组行,然后(重新)插入另一组行。

如果您只想更新数据库,可以 - 对于每个表 - 首先标识您当前要删除的所有行(即执行SELECT ... WHERE而不是DELETE ... WHERE),准备一组您要插入的行并比较这两个集合(让我们称之为 DELETE INSERT ):

  • 必须从数据库中删除 DELETE 集中仅 的行
  • 必须插入 INSERT 集中仅 的行
  • INSERT DELETE 集合中的行必须更新。

但如上所述,执行这些操作的方式和顺序取决于您的具体数据结构。例如。如果表之间存在依赖关系(即父子关系),则父实体上的删除操作也必须处理子项(可能在外键定义中使用ON DELETE CASCADE子句)。在这种情况下,您还应该为子表处理父表。