2014-12-30 14 views
6

Desidero creare un documento in blue documentdb con una colonna di incremento automatico.Come creare una colonna auto incrementata in Documentdb

È possibile? Se sì, per favore guidami.

Qualsiasi aiuto sarebbe molto apprezzato.

Database db = CreateOrReadDocumentDb("EmployeeDb").Result; 
DocumentCollection dc = CreateOrReadDocumentCollection(db.SelfLink, "EmployeeDetails").Result; 
Employee emp = new Employee(); 
emp.Name="ABC"; 
emp.id="";//automatically generate a unique string 
emp.sal=10000; 
emp.exp =5; 
emp.index=0; // I want an auto increment column for emp with name index and want to store in azure document db 
client.CreateDocumentAsync(collectionLink, data); 
+0

non esattamente, modifico la mia domanda :) –

+0

possibile duplicato di [Abbiamo colonna di identità in DocumentDB] (http://stackoverflow.com/questions/26701587/do-we-have-identity-column-in -documentdb) –

+0

grazie Abdel Raoof :) –

risposta

6

DocumentDB non include funzionalità di incremento automatico fuori dalla scatola.

Come Gaurav menzionato in Do we have Identity Column in DocumentDB, il campo id è speciale in quanto se un valore non viene fornito dall'applicazione, DocumentDB assegnerà automaticamente un GUID.

Se è necessaria la funzionalità di incremento automatico, una soluzione potenziale potrebbe essere quella di memorizzare un contatore come documento e sfruttare DocumentDB's triggers per compilare il campo e aggiornare il contatore.

+1

Una soluzione con trigger e un contatore di documenti funzionerebbe solo entro i limiti di una singola raccolta. Se si desidera ridimensionare in un secondo momento e suddividere i dati su più raccolte, questo diventa complicato. Solo una cosa a cui pensare prima di considerare questa soluzione. Ovviamente, all'interno di una singola raccolta, la soluzione di aliuy va bene. –

+0

Sembra che non ci sia accesso all'oggetto di raccolta all'interno di un trigger, quindi sfortunatamente non funziona. – dwhieb

+0

È possibile accedere all'oggetto di raccolta all'interno di un trigger tramite 'getContext(). GetCollection()'. Ecco un esempio: https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/triggers/UpdateMetadata.js –