2016-03-17 26 views
9

Ho la lista dei documenti (oggetto) che l'oggetto ha più documenti, cioè i record Json sono presenti ma mentre provo a caricare quel file di documenti (record) non viene caricato sul documento DB ma mentre carico singoli record di documenti viene caricato con successo.Come caricare più documenti (bulk) nel documento DB

List<MyModelClass> listObj = new List<MyModelClass>(); 
    Document doc = await DocumentClient.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, listObj); 

sopra il codice non funziona .....

foreach (var item in listObj) 
    { 
     Document doc = await Client.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, item); 
    } 

Questo codice sta lavorando per me .....

Syntax : CreateDocumentAsync(String, Object, RequestOptions, Boolean) 
Object :- Document object // I Know it as per syntax it need to be "Document Type". 

voglio un altro modo per caricare tutti Documento in una volta ....

risposta

12

Non è possibile inserire più di un documento alla volta. La chiamata a CreateDocumentAsync() è solo per singoli documenti.

Per ottenere ciò, è necessario ideare un tipo di procedura memorizzata sul lato server per eseguire questa operazione e quindi passare l'array di documenti alla funzione in una singola chiamata. Puoi vedere this answer per vedere come qualcun altro ha risolto questo problema usando una funzione lato server, essenzialmente creando una matrice di documenti localmente, e poi camminando attraverso l'array nella loro stored procedure. Così, la creazione di qualcosa di simile (come tratto da quella risposta):

docObject = { 
    "items": [{doc}, {doc}, {doc}] 
} 

E passando docObject per la stored procedure.

In definitiva, la procedura memorizzata effettuava ancora chiamate di inserimento individuali, una per documento. Ma ... non avresti più round-trip di rete. E gli inserti sarebbero transazionali (se uno degli inserimenti falliva, o lanciavi un'eccezione, gli altri inserimenti sarebbero stati ripristinati).

+0

Come da risposta di @ david, ecco un esempio di una procedura di importazione bulk memorizzata - https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/stored-procedures/BulkImport.js –

+0

Grazie , David e Ryan, la tua risposta mi è stata di grande aiuto. –

+0

Il problema con il mio puntatore dell'esecuzione passa al metodo "ExecuteStoredProcedureAsync" e quindi non può accadere nulla, non un'eccezione ... –