2011-11-09 3 views
5

Voglio prendere i dati esistenti e inserirli in RavenDB.Come archiviare JSON in RavenDB?

I miei dati esistenti erano in un formato XML, quindi l'ho convertito in JSON.

Quale dovrebbe essere il mio prossimo passo? Posso archiviarlo in RavenDB così com'è? Devo creare nuovi oggetti per memorizzarlo?

Grazie in anticipo!

+0

@ShaunWilson questo è il motivo per cui è pubblicato come commento, non come risposta. –

risposta

1

Suppongo che i dati di json rappresentino i dati del dominio delle applicazioni e che si desideri avere classi con proprietà per lavorare con tali dati nell'applicazione, giusto?

In questo caso, è necessario scrivere una semplice applicazione di importazione, che compila il modello del dominio una sola volta e quindi memorizza tutti gli oggetti come normali documenti RavenDB, proprio come archiviare qualsiasi altro oggetto con RavenDB.

Ha senso?

+1

Questo ha senso. Alla fine stavo cercando un modo veramente veloce e sporco per risolvere questo problema, ma più guardo a questo, più mi sto rendendo conto che la migrazione è un dolore, e l'attenzione che sono ora, il meno mal di testa che avrò in il futuro. Grazie! – ZacAttack

5

Non è obbligatorio inviare contenuti a RavenDB utilizzando il client RavenDB, né è necessario compilare prima un modello di dominio. Questo è uno sforzo inutile e complica solo il processo di invio/inserimento/migrazione/importazione dei dati.

È possibile inviare documenti formattati JSON direttamente a RavenDB utilizzando HTTP API, in particolare si potrebbe voler esaminare l'argomento "Operazioni con documenti singoli" per semplici esempi che (attualmente) mostrano esempi che utilizzano "arricciatura".

Si consideri il seguente codice .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(); 

È possibile che questo frammento consente di inviare un documento JSON valida in un database specifico e una collezione di documento specifico con l'ID specificato. La selezione del database e la designazione dell'ID vengono eseguite tramite percorsi URL e la raccolta documenti viene specificata con l'intestazione metadati Raven-Entity-Name.

Ci sono additional metadata headers si consiglia di inviare, come ad esempio Raven-Clr-Type o Last-Modified ma non sono necessari.