Beispiel #1
0
        public BulkResponse[] Update <T>(T[] documents)
        {
            using (session.SwitchFor <T>())
            {
                var docWrapper = new { docs = documents };

                var infos = new Documents.DocumentInfo[documents.Length];

                for (int i = 0; i < documents.Length; i++)
                {
                    infos[i] = session.Documents.GetInfo(documents[i]);
                }

                var newItemCount = infos.Count(x => x == null);

                var newIds = session.GetUuids(newItemCount);


                var jsonDocs = new JObject[documents.Length];

                var newIdIndex = 0;

                for (int i = 0; i < documents.Length; i++)
                {
                    var info = infos[i] ?? new Documents.DocumentInfo(newIds[newIdIndex++], null);

                    jsonDocs[i] = session.Documents.AddInfoToObject(documents[i], info);

                    jsonDocs[i]["_id"]  = info.Id;
                    jsonDocs[i]["_rev"] = info.Revision;

                    if (jsonDocs[i]["_rev"].Value <string>() == null)
                    {
                        jsonDocs[i].Remove("_rev");
                    }
                }

                return(this.Update(jsonDocs));
            }
        }
Beispiel #2
0
 public Documents.DocumentInfo Save <T>(T doc, Documents.DocumentInfo info)
 {
     return(this.Documents.Save(doc, info));
 }