在RavenDB中存储对象的对象要求(限制)是什么

时间:2011-01-04 18:25:32

标签: .net nosql ravendb key-value-store

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

The documentation states“唯一的要求是根实体字符串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;

感谢您的反馈,请原谅我的人为举例,这是我能够描述我想要做的最简单的方式,而不需要深入研究一堆领域知识/模型。

凯尔

2 个答案:

答案 0 :(得分:2)

Raven中的所有对象都存储为JSON,并使用Json.NET进行序列化。所以,只要这样可以序列化你的类型就行了。

答案 1 :(得分:0)

RavenDB可以用作键/值存储。

但它的价值在于知道你存储的类型是什么类型。 '对象'没有用,但仍有可能。

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