2012-05-02 53 views
0

我已經設置了一個RavenDB進行評估。我寫了一些代碼,將一些文檔放入其中。然後我有一個網站呈現這些文件。RavenDB本身的數據更改

在整個一天中,我使用Raven Studio修改了這些文檔中的一些文本,以便我可以在我的網站上看到這些更改。

問題:在回家過夜後,當我第二天進來時,我的數據庫發生了變化 - 我的文檔已經恢復到「預先更改」的版本......發生了什麼? 我已經瀏覽了Raven控制檯的輸出,並且在我的開發人員計算機上一夜之間沒有發佈更新命令(我也不會期望這會發生!)

注意:這只是在我的開發計算機上運行。

回答

1

據我所知,RavenDB沒有代碼可以自動撤銷提交的寫入操作,老實說,這真的會嚇到我。總而言之,這聽起來很奇怪,我想不出可能發生的情況。我建議你發送日誌文件到ravendb支持,如果它再次發生,因爲這將是一個真的嚴重問題。

+0

感謝丹尼爾 - 我在想,也許有一些'索引重建'作爲低頻時間表進行,這意味着當我看到我認爲是正確的數據時,它實際上是一個'過時'索引 - 下一個一天是'正確'的數據。但即使這樣也沒有意義。我會密切關注它。謝謝 – Adam

0

Adam, 只要確定,您在修改後調用了SaveChanges()函數嗎?

RavenDB絕對沒有會導致這種行爲。

+0

嗨 - 是的,絕對保存的變化。我使用.net應用程序將文檔保存到Raven - 並保存了更改。然後我將這些文檔呈現在ASP.NET應用程序中 - 都很好。然後,我在Raven Studio中修改了文檔,並在我的Web應用程序中顯示了這些更改 - 這一切都很好。然後在某個時候,我「感動」的文件消失了。也許它涉及到http://stackoverflow.com/questions/10421839/ravendb-entity-naming?由於我改變了我的文檔ID格式,所以我沒有遇到實體命名問題,我還沒有'丟失'任何文檔...... – Adam

1

我的同事在更新被恢復時遇到了這個問題。我們所做的更新是爲所有文檔添加一個屬性,然後還爲此屬性添加一個文檔特定值。我們調用了SaveConfiguration()並在Raven Studio中看到了所做的更改。一段時間後,一些文件丟失了新的屬性。

我決定打開日誌記錄,因此添加了一個NLog.config文件,讓日誌開始我觸摸web.config。這當然重新啓動了應用程序,並且「voila」,更新再次出現在Raven Studio中。

過了一段時間,他們從Raven Studio中消失了,所以我認爲這是一個工作室問題。因此,我試圖在測試控制器中從數據庫中檢索對象,不幸的是這些對象在這裏也缺乏屬性值,所以它不僅僅是一個工作室問題。

隨着日誌開啓,我們再次更新了特定類型的文檔,並根據日誌和工作室,我們實際更新了文檔。不久之後,文件通過失去它的附加屬性而又恢復了(我的同事開始在這一點上開始哭泣 - 真實的故事)。

後來我意識到這一切都是因爲我們的在線Web應用程序仍舊對象的版本。在Web應用程序中讀取數據時,返回的數據沒有額外的屬性。正因爲如此,它看起來像我們的DocumentSession認爲對象已經發生了變化(完全公平),所以當我們調用SaveChanges時,即使這些對象被寫入數據庫 - 沒有額外的屬性。

我的結論是否正確?這個問題的解決方案是什麼?我在考慮CQRS,因爲那樣我們將永遠不會在DocumentSession上調用「SaveChanges()」來進行讀取。

+0

+1:這應該是接受的答案。 @亞當 –