2016-03-17 8 views
9

Mam listę dokumentów (obiekt), który obiekt ma wiele dokumentów, tj. Zapisy Json są obecne, ale gdy próbuję przesłać te pęczki dokumentu (rekordy), nie przesyłają go do dokumentu DB ale podczas przesyłania pojedynczego dokumentu zapisuje go pomyślnie.Jak przesłać wiele dokumentów (luzem) w dokumencie DB

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

Powyższy kod nie działa .....

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

Ten kod działa dla mnie .....

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

chcę żadnego innego sposobu, aby przesłać wszystkie Dokument na raz ....

Odpowiedz

12

Nie można wstawiać więcej niż jednego dokumentu na raz. Połączenie z numerem CreateDocumentAsync() dotyczy tylko pojedynczych dokumentów.

Aby to osiągnąć, należy wykonać pewien rodzaj procedury przechowywanej po stronie serwera, aby to osiągnąć, a następnie przekazać tablicę dokumentów do funkcji w jednym wywołaniu. Możesz spojrzeć na this answer, aby zobaczyć, jak ktoś inny rozwiązał to za pomocą funkcji po stronie serwera, zasadniczo tworząc lokalnie tablicę dokumentów, a następnie przechodząc przez tablicę w ich procedurze przechowywanej. Więc, tworząc coś takiego (jak zaczerpnięty z tej odpowiedzi):

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

i przechodzącej docObject do procedury przechowywanej.

Docelowo procedura składowana wciąż będzie wywoływać pojedyncze wywołania, po jednym w każdym dokumencie. Ale ... nie miałbyś wielu tras w sieci. A wstawki będą transakcyjne (jeśli jedna z wkładek się nie powiedzie, albo wyrzucisz wyjątek, pozostałe wkładki zostaną wycofane).

+0

Zgodnie z odpowiedzią @ david, oto przykład procedury składowania importu zbiorczego - https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/stored-procedures/BulkImport.js –

+0

Dzięki , David i Ryan, twoja odpowiedź bardzo mi pomogła. –

+0

Hej, otrzymuję problem z wykonaniem metody "ExecuteStoredProcedureAsync", mój wskaźnik wykonawczy przechodzi do metody "ExecuteStoredProcedureAsync", a następnie nic się nie dzieje, a nie wyjątek ... –

Powiązane problemy