在数据库中,我已经存储了数百个文档。现在系统架构发生了变化,并且(除其他外)模型被迁移到不同的命名空间(在不同的程序集中)。
下面显示了示例文档的元数据:
和我用来获取此类文档的代码:
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 上升,而我在文档中收集了指定类型,现在已更改。
在数据库中,我有问题文档,其中包含答案列表:
在代码中,类型如下所示:
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
元数据,它应该是:
.
虽然它现在是一个列表,但由于旧$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 - Build #960