2011-11-09 7 views
5

既存のデータをRavenDBに入れたいと思っています。JSONをRavenDBに保存する方法は?

既存のデータはXML形式なので、JSONに変換しました。

私の次のステップは何ですか? そのままRavenDBに格納できますか? 新しいオブジェクトを作成して保存する必要がありますか?

ありがとうございます!

+0

@ShaunWilsonこれがコメントではなく、回答として投稿されている理由です。 –

答えて

1

あなたのjson-dataがアプリケーションドメインのデータを表していて、アプリケーションのデータを扱うためのプロパティを持つクラスを持っているとしますか?

この場合、単純なインポートアプリケーションを作成する必要があります。このアプリケーションは、ドメインモデルを一度作成してから、RavenDBでほかのオブジェクトを保存する方法と同じように、すべてのオブジェクトを通常のRavenDBドキュメントとして保存します。

それは意味がありますか?

+1

それは理にかなっています。私は最終的に、これを解決するための本当に迅速かつ汚れた方法を探していましたが、これを詳しく調べるほど、移行が実現することを痛感しています。私は今気付いています。未来。ありがとう! – ZacAttack

5

RavenDBクライアントを使用してコンテンツをRavenDBに送信する必要はなく、ドメインモデルを最初に設定する必要もありません。これは不必要な作業であり、データの提出/挿入/移行/インポートのプロセスを複雑にするだけです。

HTTP APIを使用してJSON形式のドキュメントを直接RavenDBに送信することができます。具体的には、「カール」を使用した例を示す簡単な例については、「単一ドキュメント操作」を参照してください。

は、次の.NETコードを考えてみましょう:

var url = string.Format("http://ravendb-server:8080/databases/{0}/docs/{1}", databaseName, docId); 
var webRequest = System.Net.HttpWebRequest.CreateHttp(url); 
webRequest.Method = "PUT"; 
webRequest.ContentType = "application/json"; 
webRequest.Headers["Raven-Entity-Name"] = entityName; 
var stream = webRequest.GetRequestStream(); 
using (var writer = new System.IO.StreamWriter(webRequest.GetRequestStream())) 
{ 
    writer.Write(json); 
} 
var webResponse = webRequest.GetResponse(); 
webResponse.Close(); 

上記のスニペットは、指定したIDを持つ特定のデータベースと特定の文書コレクションに有効なJSON文書を提出することができます。データベースの選択とIDの指定はURLパスを介して行われ、文書コレクションはメタデータヘッダーRaven-Entity-Nameで指定されます。

がありadditional metadata headersあなたは、このようなRaven-Clr-TypeLast-Modifiedとして、最大送信することもできますが、彼らが必要とされていません。

関連する問題