データベースには、すでに何百ものドキュメントが保存されています。これで、システムアーキテクチャが変更され、(とりわけ)モデルが別の名前空間に(別のアセンブリで)移行されました。
以下に、サンプルドキュメントのメタデータを示します。
そして私がそのようなドキュメントをフェッチするために使用しているコード:
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; }
}
}
Answers名前空間が変更されました。さらに、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を使用しています-ビルド#960