架构问题:CMS页面修订历史记录

时间:2012-01-23 21:46:52

标签: .net entity-framework architecture

对于我的个人网站,我目前正在开发CMS模块。 CMS模块的一个功能是页面修订历史记录。网站数据访问层正在实体框架代码优先开发。

我遇到的问题是:如何为页面分配“有效”修订版?

我目前看到两个选项:

  • Page类/表将具有CurrentRevision属性/字段,该字段将指向活动页面修订。

    • 专家显然能够轻松查找并轻松更改。
    • con是该字段必须是可空的,否则表之间会存在循环依赖关系,不确定EF是否会接受它。此外,保存EF中的更改需要两个步骤。
  • 页面修订类/表将具有IsOnline属性。

    • 亲,拯救只需要一步。
    • 这里的缺点是它显然不会阻止多个活动修订,也不会阻止没有活动修订。此外,LINQ查询中的查找不能简化,因为我们总是必须使用First(或类似的东西)。

实施此方法的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我没试过,但我会尝试使用第一种方法。 con看起来不是很大,因为两个数据库修改命令不是一个大问题(页面发布不是每秒100x的操作),在大多数情况下,如果你的CMS将提供页面编辑器,你将无论如何都需要它因为您将首先多次保存草稿(没有当前的在线版本),然后才会发布该页面(您将拥有当前的在线版本)。

如果您想提供对上一版本的访问权限,您仍然需要使用第二种方法,因为上一版本不一定是已发布的版本。