我正在使用ravendb序列化一个对象并通过mstest测试它.
我得到了这个结果: System.ArgumentException: Object serialized to String. RavenJObject instance expected.
这是我的代码
public class Store
{
private static IDocumentStore store = createStore();
private static EmbeddableDocumentStore createStore()
{
var returnStore = new EmbeddableDocumentStore();
returnStore.DataDirectory = @"./PersistedData";
returnStore.Initialize();
return returnStore;
}
public static void Write(string value)
{
using (var session = store.OpenSession())
{
session.Store(value);
session.SaveChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
似乎根本原因在于RavenJObject如何工作,因为它抛出相同的错误:
RavenJObject storeMe = RavenJObject.FromObject("errors", new JsonSerializer());
Run Code Online (Sandbox Code Playgroud)
如何在RavenDB中进行自定义序列化?
使用您未编写的类进行自定义序列化(因此您无法归因)实现Newtonsoft.Json.JsonConverter
然后像这样注册:
using (var session = store.OpenSession())
{
session.Advanced.Conventions.CustomizeJsonSerializer = serializer => serializer.Converters.Add(MailAddressJsonConverter.Instance);
session.Store(mailAddress);
session.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
根据我们在问题评论中的讨论,Raven希望你存储的对象是常规类,我的意思是它们应该JSON序列化为{Id:...}的结构.
直接存储字符串(JSON"...")或列表(JSON [{},{}])是行不通的.虽然您可以将它们存储为文档对象的属性.
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |