Каковы требования к объекту (ограничения) для хранения объекта в RavenDB - PullRequest
3 голосов
/ 04 января 2011

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

Документация гласит «Единственное требование - это свойство идентификатора строки корневого объекта», однако все примеры и учебники, которые я вижу, хранят только простые типы данных типа 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;

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

Кайл

Ответы [ 2 ]

2 голосов
/ 05 января 2011

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

0 голосов
/ 03 июня 2014

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

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

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

...