2011-11-09 22 views
5

Quiero tomar los datos existentes y ponerlos en RavenDB.¿Cómo almacenar JSON en RavenDB?

Mis datos existentes estaban en un formato XML, por lo que lo convertí en JSON.

¿Cuál debería ser mi próximo paso? ¿Puedo guardarlo en RavenDB como está? ¿Necesito crear nuevos objetos para almacenarlo?

¡Gracias de antemano!

+0

@ShaunWilson es por eso que se publica como comentario, no como una respuesta. –

Respuesta

1

Supongo que su json-data representa los datos de su dominio de aplicaciones, y desea tener clases con propiedades para trabajar con esos datos en su aplicación, ¿verdad?

Si ese es el caso, debe escribir una aplicación de importación simple, que completa su modelo de dominio una vez y luego almacena todos sus objetos como documentos RavenDB normales, del mismo modo que almacenaría cualquier otro objeto con RavenDB.

¿Eso tiene sentido?

+1

Eso tiene sentido. En última instancia, estaba buscando una forma realmente rápida y sucia de resolver esto, pero cuanto más lo veo, más me doy cuenta de que la migración es un dolor, y cuanto más atento estoy ahora, menos dolores de cabeza tendré en el futuro. ¡Gracias! – ZacAttack

5

No es obligatorio enviar contenido a RavenDB utilizando RavenDB Client, ni es necesario llenar primero un modelo de dominio. Esto es un esfuerzo innecesario y solo complica el proceso de envío/inserción/migración/importación de datos.

Puede enviar documentos formateados JSON directamente a RavenDB usando el HTTP API, específicamente puede que desee revisar el tema "Operaciones de un solo documento" para ejemplos simples que (actualmente) muestran ejemplos usando 'curl'.

Considere el siguiente código .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(); 

El fragmento anterior le permite enviar un documento JSON válida en una base de datos específica y una colección de documentos específicos con el ID especificado. La selección de la base de datos y la designación de ID se realiza a través de rutas de URL, y la colección de documentos se especifica con el encabezado de metadatos Raven-Entity-Name.

Hay additional metadata headers es posible que desee enviar, como Raven-Clr-Type o Last-Modified pero no son necesarios.