实体框架中的数据库条目的版本历史

时间:2014-06-09 14:35:41

标签: c# asp.net-mvc entity-framework database-design

我有一个项目,我想保留每个更改的版本历史记录。例如,在以下示例中,如果某人更改了以下信息:

  1. 向人员添加新任务
  2. 编辑现有任务
  3. 在群组中添加新人或编辑现有人员信息
  4. 添加新论坛或修改现有论坛
  5. 这是我的结构图片:

    http://i.stack.imgur.com/l7YwG.png

    它将创建一个新版本的项目。它似乎会复制许多现有数据。任何人都可以建议解决这个问题。

    真正的项目有很多一对多的关系,并且最终用户的预期解决方案需要每个修改的中心版本。

    我正在使用ASP.NET MVC和Entity Framework来解决这个问题。

2 个答案:

答案 0 :(得分:1)

由于没有答案,我通过为每个表添加一个额外的表来解决问题。跟随缓慢变化的维度类型4:http://en.wikipedia.org/wiki/Slowly_changing_dimension 然而,就这个问题得到一些其他想法会很好。

以下是我的解决方案图片:http://i.stack.imgur.com/jhvQi.png Version History of Database entries in entity framework

答案 1 :(得分:0)

由于您使用的是EF,我可以说可以说有一些XML可序列化的模型类。那么为什么不直接序列化模型的快照并将其保存在附有日期时间戳的表中,并将最新版本保存在表中?每当你需要旧版本时,你只需要它并反序列化然后渲染。

通过这种方式,您始终可以使用最新版本,实际上应该会发生这种情况并将旧版本保留在xml转储中以备不时之需。