在數據庫中,我已經存儲了數百個文檔。現在系統體系結構已經改變,並且(其中)模型被遷移到不同的名稱空間中(在不同的程序集中)。RavenDB在模型名稱空間更改後引發拋出異常
下面,示例文檔的元數據被示出:
和代碼我使用獲取該文件:
var configuration = documentSession.Load<One.Social.Core.Entities.Setting>("Setting");
會拋出異常鑄造:
[InvalidCastException: Unable to cast object of type 'One.QA.Core.Entities.Setting' to type 'One.Social.Core.Entities.Setting'.]
更新:
類似的錯誤,但來自NewtonsoftJson上升,而我已收集指定的類型,現在改變dosrar。
在數據庫中,我有問題的文件,其中包含答案的列表:
在代碼中,類型看起來像這樣:
namespace One.Social.Ask.Web.Models
{
public class Question
{
public string Content { get; set; }
public IList<One.Social.Ask.Web.Models.Answer> Answers { get; set; }
}
}
答案命名空間變化。另外,現在它來源於IList <>,沒有ICollection <>。我現在不需要$type
meta,它應該是:
。
雖然這是一個列表現在,一個錯誤,因爲上升的舊$type
信息:
Newtonsoft.Json.JsonSerializationException: Error resolving type specified in JSON 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]], mscorlib'. ---> Newtonsoft.Json.JsonSerializationException: Could not find type 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]]' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
什麼是遷移的所有文件,以反映當前類型的名稱的最好方法?有沒有內置的機制?
順便說一句:我使用RavenDB - 建立#960
謝謝,的確我有第二種類型。刪除烏鴉已自動將文檔元信息更改爲當前類型「Raven-Clr-Type」:「One.Social.Ask.Web.Models.Setting,One.Social.Ask.Web」。你能看看我的問題的更新嗎?我有另一個類似的問題。 – jwaliszko
這是正確的。解決了我的問題:)謝謝Ayende –
我有同樣的問題,我甚至無法從RavenDB Studio中刪除文檔。這是因爲舊的clr類型仍然存在於插件中!我不得不停止ravendb,刪除插件,重新啓動ravendb,通過工作室刪除所有文件(現在工作),然後再次停止ravendb,重新安裝插件並再次啓動ravendb。 – ldx