2011-11-09 7 views
5

Je veux prendre des données existantes et les placer dans RavenDB. Mes données existantes étaient dans un format XML, donc je l'ai converti en JSON.Comment stocker JSON à RavenDB?

Quelle devrait être ma prochaine étape? Puis-je le stocker dans RavenDB tel quel? Ai-je besoin de créer de nouveaux objets pour le stocker?

Merci d'avance!

+0

@ShaunWilson c'est pourquoi il est posté comme commentaire, pas comme réponse. –

Répondre

1

Je suppose que vos données json représentent les données de votre domaine d'applications, et que vous voulez avoir des classes avec des propriétés pour travailler avec ces données dans votre application, n'est-ce pas?

Si c'est le cas, vous devez écrire une simple application d'importation, qui remplit une fois votre modèle de domaine puis stocke tous vos objets comme des documents RavenDB réguliers, comme vous le feriez avec RavenDB.

Est-ce que cela a du sens?

+1

Cela a du sens. En fin de compte, je cherchais une solution vraiment rapide et sale pour résoudre ce problème, mais plus je m'intéresse à cela, plus je réalise que la migration est pénible et plus je suis attentif, moins je vais avoir de maux de tête. l'avenir. Merci! – ZacAttack

5

Il n'est pas obligatoire de soumettre du contenu à RavenDB à l'aide du client RavenDB, ni de remplir d'abord un modèle de domaine. Ceci est un effort inutile et ne fait que compliquer le processus de soumission/insertion/migration/importation de données.

Vous pouvez soumettre des documents au format JSON directement à RavenDB en utilisant le HTTP API, en particulier vous pouvez consulter la rubrique "Single Document Operations" pour des exemples simples qui montrent (actuellement) des exemples en utilisant 'curl'.

Tenir compte du code .NET suivant:

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(); 

L'extrait ci-dessus vous permet de soumettre un document JSON valide dans une base de données spécifique et une collection de documents spécifique avec l'ID spécifié. La sélection de la base de données et la désignation de l'ID sont effectuées via des chemins d'URL, et la collection de documents est spécifiée avec l'en-tête de métadonnées Raven-Entity-Name.

additional metadata headers Il est possible que vous souhaitiez envoyer vers le haut, par exemple Raven-Clr-Type ou Last-Modified mais ils ne sont pas requis.