2011-01-04 3 views
3

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

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

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

Kyle

+0

RavenDB можно использовать в качестве хранилища ключ/значение. Но его ценность - это знать, какой тип вы сохранили, чтобы отступить. «Объект» не помогает, но все же возможен. Также обратите внимание, что если значение огромно - как в мегабайтах, лучше всего использовать API вложений: http://ravendb.net/docs/2.5/client-api/attachments –

ответ

2

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

0

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

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

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

Смежные вопросы