【发布时间】:2011-06-29 00:17:33
【问题描述】:
我正在使用 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();
}
}
}
似乎根本原因在于 RavenJObject 的工作方式,因为这会引发相同的错误:
RavenJObject storeMe = RavenJObject.FromObject("errors", new JsonSerializer());
如何在 RavenDB 中进行自定义序列化?
【问题讨论】:
-
为什么只存储一个字符串?你打算如何再次查询它?通常,您存储一个带有 Id 属性的对象。
-
我实际上是在尝试存储一个继承自 List
的自定义对象,但我不想拖入一堆代码。而且我想如果我理解字符串大小写,我就会知道为什么我的对象不保存。 -
我不认为它会从 List
继承,但如果你包装 List 它确实有效。为什么需要继承它? -
我可以改变我的程序的工作方式。在这一点上,我试图了解序列化程序是如何工作的,然后我将更改我的代码以适应它。
-
嗯,我认为您的问题是文档需要是类。它们可以包含任何类型的属性,包括列表,但文档本身需要是常规类。因此,根本不支持您存储字符串或直接存储列表的两个测试用例。至少我所知道的不是。考虑通过序列化字符串“...”或列表 [{},{}] 生成的 JSON,您希望它是一个对象 {}。
标签: ravendb