我正在研究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;
感谢您的反馈,请原谅我的人为举例,这是我能够描述我想要做的最简单的方式,而不需要深入研究一堆领域知识/模型。
凯尔
答案 0 :(得分:2)
Raven中的所有对象都存储为JSON,并使用Json.NET进行序列化。所以,只要这样可以序列化你的类型就行了。
答案 1 :(得分:0)
RavenDB可以用作键/值存储。
但它的价值在于知道你存储的类型是什么类型。 '对象'没有用,但仍有可能。
另请注意,如果值很大 - 以兆字节为单位,则最好使用附件API:http://ravendb.net/docs/2.5/client-api/attachments