3

我正在研究 RavenDB 以在系统中使用(主要用作持久键值缓存),并且需要知道可以存储的实际数据的限制是什么。

文档指出“唯一的要求是根实体字符串 Id 属性”但是我看到的所有示例和教程都只存储简单的字符串、int、decimal、bool 数据类型。

是否可以存储此对象?

public class StorableObject {
   public string Id {get;set;}
   public object ValueObject {get;set;}
}

使用这个(sudo)代码?

// I just copy and pasted this from a random blog post -- an example to show a complex object with a lot of hierarchy, methods, properties, etc.
string boundary = Guid.NewGuid().ToString();
HttpWebRequest request = HttpWebRequest.Create("http://twitpic.com/api/uploadAndPost")
    as HttpWebRequest;
request.Method = "POST";
request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
request.PreAuthenticate = true;

var objectToStore = new StorableObject { ValueObject = request }; 
session.Store(objectToStore);
session.SaveChanges();

并像这样把它拿回来:

var storedObject = session.Load<StorableObject>("objects/123456789");
var request = (HttpWebRequest) storedObject.ValueObject;

感谢您的反馈,请原谅我人为的示例,这是我可以描述我正在尝试做的事情的最简单方法,而无需深入研究一堆领域知识/模型。

凯尔

4

2 回答 2

2

Raven 中的所有对象都存储为 JSON 并使用Json.NET进行序列化。因此,只要它可以序列化您的类型,它就可以工作。

于 2011-01-05T13:13:16.073 回答
0

RavenDB 可以用作键/值存储。

但它的价值在于知道你存储了什么类型来拉回。“对象”没有帮助,但仍然可能。

另请注意,如果值很大 - 以兆字节为单位,最好使用附件 API:http ://ravendb.net/docs/2.5/client-api/attachments

于 2014-06-03T16:09:29.407 回答