Каковы требования к объекту (ограничения) для хранения объекта в RavenDB?

Я изучаю RavenDB для использования в системе (в основном в качестве постоянного кеша ключ-значение), и мне нужно знать, каковы ограничения фактических данных, которые могут быть сохранены.

В документации указано "Единственное требование состоит в том, чтобы свойство Id строки корневого объекта", однако все примеры и учебные пособия, которые я вижу, хранят только простые типы данных string, 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;

Спасибо за ваш отзыв, извините за надуманный пример, это был самый простой способ описать то, что я пытаюсь сделать, не углубляясь в кучу знаний/моделей предметной области.

Кайл


person Kyle West    schedule 04.01.2011    source источник
comment
RavenDB можно использовать как хранилище ключей/значений. Но его ценность заключается в том, чтобы знать, какой тип вы сохранили, чтобы вернуть. «Объект» бесполезен, но все же возможен. Также обратите внимание, что если значение велико, например, в мегабайтах, лучше всего использовать API вложений: ravendb.net/docs/2.5/client-api/attachments   -  person Dominic Zukiewicz    schedule 03.06.2014


Ответы (2)


Все объекты в Raven хранятся в формате JSON и сериализуются с использованием Json.NET. Так что, пока это может сериализовать ваш тип, это будет работать.

person Matt Warren    schedule 05.01.2011

RavenDB можно использовать как хранилище ключей/значений.

Но его ценность заключается в том, чтобы знать, какой тип вы сохранили, чтобы вернуть. «Объект» бесполезен, но все же возможен.

Также обратите внимание, что если значение большое — например, в мегабайтах, лучше всего использовать API вложений: http://ravendb.net/docs/2.5/client-api/attachments

person Dominic Zukiewicz    schedule 03.06.2014