RavendBにオブジェクトを保存するためのオブジェクト要件(制限)は何ですか
-
15-10-2019 - |
質問
私は、システムで使用するためにRavendBを調査しています(主に持続的なキー価値キャッシュとして)、保存できる実際のデータの制限は何かを知る必要があります。
ドキュメントは述べています 「唯一の要件は、ルートエンティティ文字列IDプロパティ」ですが、すべてのサンプルとチュートリアルでは、Simple 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;
フィードバックをありがとう、私の不自然な例を許してください、それは私がドメインの知識/モデルの束を掘り下げることなく私がやろうとしていることを説明することができる最も簡単な方法でした。
カイル
解決
レイヴンのすべてのオブジェクトはJSONとして保存され、使用してシリアル化されます json.net. 。したがって、それがあなたのタイプをシリアル化できる限り、それは機能します。
他のヒント
RavendBは、キー/バリューストアとして使用できます。
しかし、その価値は、あなたが引き戻すために保存したタイプを知っていることです。 「オブジェクト」は役に立ちませんが、それでも可能です。
また、値が巨大な場合 - メガバイトのように、添付ファイルAPIを使用するのが最善であることに注意してください。 http://ravendb.net/docs/2.5/client-api/attachments
所属していません StackOverflow