0

我将 symfony2 与学说 2 一起使用。

我开发了一个功能,用户可以将数据从外部源导入数据库。我现在必须实现“还原”功能。基本上,用户应该能够一键撤消整个导入操作。

行为与 mysql 回滚或 mysqldump + 重新导入数据子集的行为相同,但我需要在应用程序级别使用 Doctrine 2 工作。

序列化和反序列化代理或使用工作单元都没有成功。我现在正在实现一个实用程序类来将实体(和指定的关系)保存到数组/从数组恢复实体(和指定的关系),但是管理所有关系需要做很多工作。

有没有更简单的解决方案?

4

1 回答 1

0

我不认为以下是一个优雅的解决方案,因为它非常具有侵入性,但它可能会有所帮助并且很可能非常有效:

为每个实体指定一个引用导入实体的导入字段。还原时只需删除映射到给定Import的所有实体。如果修改实体以添加导入字段过于侵入或不是一个选项,则可以考虑将导入映射到特定实体的 OneToOne 关系。这也一定程度上减少了耦合。

如果导入也包含更新,那么事情显然会变得更加复杂;导入后对数据进行的修改也是如此。恢复将失败或级联到新实体。

于 2012-09-13T11:44:03.360 回答