我正在研究用于在系统中使用的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;

感谢您的反馈,请原谅我人为的例子,这是我最简单的方法来描述我想做的事情而不研究一堆领域知识/模型。

凯尔

有帮助吗?

解决方案

乌鸦中的所有对象都存储为JSON,并使用 json.net. 。因此,只要可以序列化您的类型,它就会起作用。

其他提示

Ravendb可以用作钥匙/值存储。

但是它的价值是知道您存储了哪种类型。 “对象”没有帮助,但仍然有可能。

另请注意,如果该值很大 - 如Megabytes,最好使用附件API: http://ravendb.net/docs/2.5/client-api/attachments

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top