2012-01-23 28 views
0

對於我的個人網站,我目前正在開發CMS模塊。 CMS模塊的其中一個功能是頁面修訂歷史記錄。網站數據訪問層正在「實體框架代碼優先」中進行開發。建築問題:CMS頁面修訂歷史

我遇到的問題是:我將如何爲頁面分配「主動」版本?

我目前看到兩個選項:

  • Page類/表將有CurrentRevision屬性/字段將指向活動頁面改版。

    • 該pro顯然能夠很容易地查找它並能夠輕鬆地進行更改。
    • con是該字段必須爲空,否則表之間將存在循環依賴關係,不知道EF是否會接受它。另外,保存EF中的更改需要兩個步驟。
  • 頁面修訂類/表將具有IsOnline屬性。

    • 親,是保存只需要一步。
    • 這裏的缺點是它顯然不會阻止有多個活動修訂,它也不會阻止沒有活動修訂。此外,在LINQ查詢中查找不能簡化,因爲我們將始終使用First(或類似的東西)。

什麼是實現這一目標的最佳方式是什麼?

+0

您能分享一些關於您在此期間學到的問題的見解嗎?謝謝! –

+1

使用唯一鍵約束的第二種方法。 – Sebazzz

回答

1

我沒有嘗試,但我會嘗試使用第一種方法。 con的大小並不像看起來那麼大,因爲兩個數據庫修改命令並不是什麼大問題(頁面發佈不是操作,你會每秒處理100次),並且在大多數情況下,如果CMS將提供頁面編輯器,您仍然需要它因爲您將首先保存多次草稿(當前沒有在線版本),並且只有在此之後您纔會發佈該頁面(您將擁有當前的在線版本)。

如果您想提供最後一個修訂版本的訪問權限,您仍然需要使用第二種方法,因爲上一個修訂版本不必是已發佈版本。