我的同事在更新被恢復時遇到了這個問題。我們所做的更新是爲所有文檔添加一個屬性,然後還爲此屬性添加一個文檔特定值。我們調用了SaveConfiguration()並在Raven Studio中看到了所做的更改。一段時間後,一些文件丟失了新的屬性。
我決定打開日誌記錄,因此添加了一個NLog.config文件,讓日誌開始我觸摸web.config。這當然重新啓動了應用程序,並且「voila」,更新再次出現在Raven Studio中。
過了一段時間,他們從Raven Studio中消失了,所以我認爲這是一個工作室問題。因此,我試圖在測試控制器中從數據庫中檢索對象,不幸的是這些對象在這裏也缺乏屬性值,所以它不僅僅是一個工作室問題。
隨着日誌開啓,我們再次更新了特定類型的文檔,並根據日誌和工作室,我們實際更新了文檔。不久之後,文件通過失去它的附加屬性而又恢復了(我的同事開始在這一點上開始哭泣 - 真實的故事)。
後來我意識到這一切都是因爲我們的在線Web應用程序仍舊對象的版本。在Web應用程序中讀取數據時,返回的數據沒有額外的屬性。正因爲如此,它看起來像我們的DocumentSession認爲對象已經發生了變化(完全公平),所以當我們調用SaveChanges時,即使這些對象被寫入數據庫 - 沒有額外的屬性。
我的結論是否正確?這個問題的解決方案是什麼?我在考慮CQRS,因爲那樣我們將永遠不會在DocumentSession上調用「SaveChanges()」來進行讀取。
感謝丹尼爾 - 我在想,也許有一些'索引重建'作爲低頻時間表進行,這意味着當我看到我認爲是正確的數據時,它實際上是一個'過時'索引 - 下一個一天是'正確'的數據。但即使這樣也沒有意義。我會密切關注它。謝謝 – Adam