版本化实体的最佳实践?

时间:2009-07-19 14:27:37

标签: .net versioning revision database-versioning

下午好,

我目前处于用.Net编写的新项目的早期阶段,并使用Entity Framework进行数据持久性/存储。所需的功能之一是能够“版本化”某些模型类型。例如。一个模型是一个'需求',它将具有n'需求版本',基本上有一种方法可以回溯到特定'需求'实例的历史/生命周期。在所有修订版中唯一必须是静态的是它的“ID”,其他一切在整个需求的生命周期中都是绝对可变的。

现在Q是,我应该'只是'在需求>>之间创建1:n关系RequirementVersion?其他功能需要的是将旧状态完全恢复为当前/最新状态的可能性,必须能够具有次要和主要版本(更改)等,并且最后但并非最不重要的是能够创建“基线”具有最新版本的需求集合,以便稍后返回到该特定基准并显示所有包含的RequirementVersions?

这必须扩展到几百万个需求记录,每个都有几千个修订版...这就是为什么我要问...一个简单的1:n关系的缩放方面等。

有没有人做过类似的事情,也许还有一些关于版本控制/基线等的建议/最佳实践等?

干杯&谢谢, -Jörg

1 个答案:

答案 0 :(得分:0)

这取决于每个要求有多少数据。

如果Requirement有大字段(例如需求说明)。

  1. 您可能希望使用版本字段,而不是需求本身。不幸的是,似乎没有简单的方法来处理实体框架。
  2. 其他解决方案(我们为CMS执行此操作)是为Requirement和Requirement Description提供单独的表。因此,您将获得RequirementVersions和RequirmentDescriptionVersions。
  3. 如果要求足够小,您可以使用要求>> RequirementVersion。在大多数情况下,您不会有大量数据增长,尤其是您可以使用SQL2008压缩。