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)); } }
public Documents.DocumentInfo Save <T>(T doc, Documents.DocumentInfo info) { return(this.Documents.Save(doc, info)); }